本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。
本次demo目标立下:
1. 搭建或移植FreeRTOS到STM32上,毕竟对于长期在Linux环境开发(虽然也号称嵌入式),什么中断、拉高拉低,一直来没有搞的明明白白。有个RTOS会方便很多
2. printf重定向到串口1,可以实现打印输出
3. 有个任务:定期拉高LED,然后反转,比较方便的看看程序运行情况。(在没有屏幕的设备里,这个就好比串口输出,很常用)
本次采用板子是 晋中的开发板,搜索了下(网上关于这块介绍比较少,大部分是什么原子的),但对比了两个品牌开发板的原理图,大部分是一致的,因此很多情况下都是可以参考的,甚至复用吧!!
STM32CubeMX 端配置
打开STM32CubeMX软件,首先要选择芯片,晋中开发的是 STM32F407ZGT6
1. 配置RCC
CPU心脏起搏器选择,大概意思选择外部的方式:HSE、LSE也是
这个地方,如果要讲究,就得看开发板原理图,是不是这样设计的
2. 第二步,我觉得应该配置时钟:
选择 这个tab
然后配置参考如下图(实际跟上一步有关系,都是HSE、LSE配置),芯片168MHz是正常的频率,目前小白的水平,先不管功耗的问题,就是正常频率去运行。(注意那几个选择)
3. 配置点灯LED对应GPIO
点灯是Output,看了下原理图,开发板用与点灯是PF9、PF10
在这个图上面,找到PF9:
然后,点击对应的"引脚"就可以设置属性:主要是in 还是out,如果是右键的话,可以设置名称之类的。
GPIO还有个点,也要设置的。比如pull-up 还是 pull - down,要看原理图(跟电源连接的,就是up)
到此为止,两个点灯的GPIO已经配置好了。
4. 配置SYS
系统一些调试信息,TIM1也很重要
5. 配置串口
板子的串口1是接在USB转串口芯片上的,方便电脑侧获得输出结果,因此,打算用串口1作为Printf输出接口。如下图,
大概意思:采用同步方式,然后勾选中断。如果要DMA方式,还要DMA Settings进行配置,不过我没有成功(配置是可以配置,但不知道哪里错了,运行不起来)
当然波特率这些也是可以设置的,在Parameter Settings里面就可以根据实际需要设置。
6. 添加Freertos系统
到此为止,所有配置都可以了。
7. 配置project信息
选择Project Manager - Project
然后在 Code Generator
最后一步,就是生成代码,生成好之后可跳转到Keil 这边。
8. 在Keil码代码
9. 烧写到板子