3.RT-thread 项目实战–LED驱动及finsh组件调试

3.RT-thread 项目实战–LED驱动及finsh组件调试RT-thread在19年12月份推出了一个很好用的工具RT-threadstdio,比Env更加的方便,接下来的代码开发我们就使用这个工具进行,不使用keil和IAR了。工具的一些配置和入门使用直接看官方的教学视频就可以了,这里我们不做过多的介绍,下面开始进入今天的正题。打开我们的软件后,点击文件–》新建–》RT-thread项目,然后取个项目名字,就叫temp_prj吧,然…

大家好,又见面了,我是你们的朋友全栈君。

RT-thread 在19年12月份推出了一个很好用的工具RT-thread stdio,比Env更加的方便,接下来的代码开发我们就使用这个工具进行,不使用keil和IAR了。工具的一些配置和入门使用直接看官方的教学视频就可以了,这里我们不做过多的介绍,下面开始进入今天的正题。

 

打开我们的软件后,点击文件–》新建–》RT-thread 项目,然后取个项目名字,就叫temp_prj吧,然后我们的不是开发板选择 基于芯片,然后我用我们的串口1作为调试口。

3.RT-thread 项目实战--LED驱动及finsh组件调试

经过几秒的加载我们的工程文件就出来了。。。

3.RT-thread 项目实战--LED驱动及finsh组件调试

这里面包括了stm32的库文件,RT-thread的相关文件等,确实很方便额。

然后点击RT-thread Settings,选择ulog日志和finsh命令,然后保存,编译。

3.RT-thread 项目实战--LED驱动及finsh组件调试

编译很快,没有任何报错。下一步该下载到板卡看效果了,然后进行下载调试(第一次可能要配置下下载工具,),软件使用问题可查看官网的视频。

3.RT-thread 项目实战--LED驱动及finsh组件调试小锤子编译,小箭头下载。打开串口助手配置好波特率,就可以看到打印信息了。

3.RT-thread 项目实战--LED驱动及finsh组件调试

很顺利,但是好像调试的指令不是很全,接下来先把我们的灯和蜂鸣器的驱动调试出来。

其实在裸机的开发中我们很简单的直接GPIO初始化,进行控制是很容易实现的,在FreeRtos中好像也挺好捋顺,但是RT-thread 是类unix系统,习惯linux编程的可能更容易理解,那么我们怎么添加我们的灯和蜂鸣器驱动,下面就一起整一下。

在第一节的时候我们也讲解了是怎么调用到main.c中的main函数的。

我们可以了解到components.c的int $Sub$$main(void)是以补丁的方式存在的,如果我们不需要更改里面的初始化内容啊,只是做自己的业务层,只在main.c里面该初始化外设初始化外设,该初始化任务初始化任务,如果想更改一些时钟啊等配置啊,到相应位置进行修改就可以了,components.c中rtthread_startup中进行相关功能的配置,想详细了解的看官方文档就可以了。

 

为了后期方便维护,我们新建一个文件夹,取名my_drivers,在新添加一个文件叫做my_gpio 用于存放led和蜂鸣器的初始化和相应的控制函数。

 

3.RT-thread 项目实战--LED驱动及finsh组件调试

那么我们的第一个要解决的问题就来了,如何快速新建自己的.c 和 .h文件?

1.文件夹右键新建.c文件,然后打开my_gpio的源文件路径,开始新建一个对应的.h文件,方便后期的调用,这种方法是可以的。

当然我们在keil下一般都是在一个路径下,建好文件,然后在工程上添加上文件路径。

那么在studio中肯定也是可以这么操作的,工程属性–》路径和符号–》添加相应的文件夹路径。

那么还有没有更快更好的办法,答案是:有的。

  1. 使用sconscript脚本进行自动的文件路径添加。

https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=423222&highlight=%E5%A6%82%E4%BD%95%E6%B7%BB%E5%8A%A0%E7%BC%96%E8%AF%91

在1月2的的答疑视频中可以找到相关解答。

方法就是将SConscript脚本文件直接放在和你文件同一级目录下,然后刷新下工程,打开RT-thread settings随便加载或删除个东西,只是为了使工程检测到有变动,然后执行脚本,这时候就可以发现路径里有这个文件了,避免了每次都手动添加路径的麻烦。

3.RT-thread 项目实战--LED驱动及finsh组件调试

然后就可以在gpio.c里面初始化驱动,在main.c里面新建一个点灯任务。

为了以后直接用,直接取名为一个看门狗任务,同理,新建一个文件夹和文件。

现在思路很清晰了:

3.RT-thread 项目实战--LED驱动及finsh组件调试

在主函数中初始化led硬件外设,然后新建一个看门狗任务,进行1s的灯闪烁。

3.RT-thread 项目实战--LED驱动及finsh组件调试

看门狗任务文件中新建一个任务,用来灯闪烁。

由于等闪烁函数rt-thread没有抽象出来直接调用hal库实现

3.RT-thread 项目实战--LED驱动及finsh组件调试

 

此时我们的灯在正常闪烁,finsh组件正常使用。

3.RT-thread 项目实战--LED驱动及finsh组件调试

 

详细代码之后都会上传到git,到时候详细看一下就都明确了。

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143493.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BP神经网络算法基本原理_卷积神经网络推导过程

    BP神经网络算法基本原理_卷积神经网络推导过程原文写于2018年5月。修改于2019年11月17。最近在学习《DeepLearning》这本书,书中在前馈神经网络、全连接神经网络以及卷积神经网络等内容中,都有提到反向传播算法,这一算法可以说是神经网络中求解参数比较核心的部分了。为了更好地理解神经网络工作的原理,认识反向传播在神经网络中的运算机制,在综合《DeepLearning》书中的有关部分并且学习了b站讲解神经网络的相关视频及一…

    2025年10月30日
    3
  • 基于单片机的交通信号灯系统设计开题报告_51单片机交通信号灯设计

    基于单片机的交通信号灯系统设计开题报告_51单片机交通信号灯设计十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。设计功能描述:1、采用51单片机作为主控单元;2、采用74HC245芯片驱动数码管;3、采用数码管显示倒计时时间;4、东西和南北方向各有两个数码管,分别显示时间,东西和南北的时间是不一样的,相差黄灯的时间才是正确的;5、可分别设置主干道和支干道通行时间;6、具有紧急模式,特种车辆优先通行或交通事故应急处理。按键说明:K1:黄灯长亮…

    2025年12月1日
    10
  • navicat15.0.17万能激活码【在线注册码/序列号/破解码】

    navicat15.0.17万能激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    154
  • BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第15章节–开发SP2013工作流应用程序 总结

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第15章节–开发SP2013工作流应用程序 总结

    2021年12月15日
    67
  • 防火墙透明模式和路由模式区别_防火墙的部署模式

    防火墙透明模式和路由模式区别_防火墙的部署模式防火墙能够工作在三种模式下:路由模式、透明模式、混合模式。如果防火墙以第三层对外连接(接口具有IP地址),则认为防火墙工作在路由模式下;若防火墙通过第二层对外连接(接口无IP地址),则防火墙工作在透明模式下;若防火墙同时具有工作在路由模式和透明模式的接口(某些接口具有IP地址,某些接口无IP地址),则防火墙工作在混合模式下。防火墙三种工作模式的简介1、路由模式当防火墙位于内部网络和外部网络之间时,需要将防火墙与内部网络、外部网络以及DMZ三个区域相连的接口分别配置成不同网段的IP地址

    2025年8月10日
    3
  • python2 nonlocal_python unboundlocalerror

    python2 nonlocal_python unboundlocalerror在廖雪峰的官网上看到一个很有意思题目。关于闭包的,有兴趣的朋友可以看一下这里,做一下这个题目,当然需要一点闭包的知识。下面我简述一下:利用闭包返回一个计数器函数,每次调用它返回递增整数。#修改下面这个函数defcreateCounter():defcounter():passreturncounter#测试:counterA=createCounter()print(counter…

    2025年9月21日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号