开发工具使用的是RT-thread Studio。
1.首先是创建工程![](https://i-blog.csdnimg.cn/blog_migrate/1451b0ac395947ee2531d1a316856738.png)
芯片空间小可以选择nano,我使用的是f429,这里选择标准rt。
填写工程名字,选择芯片型号与调试器,那个控制台默认是用的串口1打印调试内容,可以不用管,如果用的官方开发板(如正点原子),可以选择基于开发板,基于开发板的一般很多初始化都配置好了,只需要用就行了。如果没有需要的芯片型号或者开发板型号,可以选择在线下载。
我这里选择基于芯片的,创建完成就是这样的
默认是会在终端窗口打印内容。终端配置点击这里。
下载后默认会打印下面内容
2.再让我们点个灯,![](https://i-blog.csdnimg.cn/blog_migrate/eadef815fc05aafbe9f9a80621947872.png)
代码如图,写好后编译无错然后下载就行了,LED正常闪烁。
3.配置按键中断与回调函数
编译,没有问题下载后,按按键就会改变led状态(没有消抖,效果可能不好)
4.adc读取
adc读取需要开启功能并重新配置(因为默认是开了pin操作的功能,所以可以直接用)
我们分别点击这两个settings,首先是配置rt的功能,双击后会出现这样的界面
我一般选择点那个小箭头,然后点击组件,设备驱动,然后开启我们需要的功能
选择好之后按CTRL+S保存,在board.h文件中开启(取消注释或者添加)我们要用的那个adc
再在conf.h开启adc模块
然后编译,没有错误,添加代码
这个时候下载进去读出来的数据通常为0,我们需要点击cubemxsettings进行设置。
时钟和中断我都默认的,可以按需选择,开启串口1(中断打印需要)
选择mdk
不选择单独的h和c,然后生成代码。然后关闭CUBEMX,一定要关闭,不然可能代码不会更新,完成配置之后,会提示备份了conf文件,不用管就行,软件自动进行了代码适配。编译下载就能读出数据了
但很有可能你读出来的数据不正常,可能一直是0,或者改变很小。这个一般就是你rt初始化配置的io口不对,或者配置的和你读取的io不一样,修改一下就可以。
这里我是把读取代码放在按键中断里面的,每按一次按键就能读取并输出一次。
5.输出pwm和定时器中断
首先是在rt-thread settings里面开启定时器和pwm的驱动,Ctrl+S保存
board.h中开启定时器和pwm(pwm几就是定时器几)
然后在cubemx中配置
pwm
定时器中断
生成代码,编译,会报错,有点奇怪,就tim4会报错
我这里就直接把tim4开启那注释了,然后就没错了,但是初始化就会有问题,我们就手动调用一下cubemx的代码。
把cubemx的main.c中的tim初始化函数copy到msp.c,包括定义的结构体,记得删除static,以便调用
然后在main.c中引入初始化函数和结构体,初始化时调用并开启定时器中断
然后你就会发现程序卡死了,因为中断开启后没有处理函数。我们添加一下相应的中断函数就可以了。
编译下载,终端就能正常打印了。注意,不要在中断里调用延时之类的函数
输出pwm只需要在定时器配置的基础上(不包含中断)设置一下就行
这样就能在相应通道输出pwm了
。。。持续更新中