完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于RT-THREAD STM32F429IGT6 BSP前期准备
硬件平台:野火STM32挑战者 MCU:STM32F429IGT6 开发工具:
几点说明
一、复制源码BSP模版
图1.applications文件夹
二、STM32CubeMX生成配置代码 打开stm32f429-hlg-v1.0boardCubeMX_Config目录下的CubeMX_Config.ioc工程。
图6.STM32CubeMX更改MCU型号
图7.STM32CubeMX配置RCC
图8.STM32CubeMX配置SYS
图9.STM32CubeMX配置USART1 说明:BSP模版的FinSH终端默认使用USART1,因此需要先使能该串口。当然也可以根据硬件情况更改为其他串口。
图14.borad.h修改 为 BSP 添加驱动时,STM32CubeMX 工具可以快速的完成使能外设和配置管脚的工作。而外设初始化,中断配置,DMA配置等等则由 RT-Thread 提供的驱动文件来完成。也就是说,虽然 STM32CubeMX 生成了多个文件用来初始化外设,但 RT-Thread 只使用了 STM32CubeMX 生成的 stm32fxx_hal_msp.c 文件和 stm32fxx_hal_conf.h 文件。上面的这段话在后面具体的BSP过程中就会理解。 三、修改Kconfig文件 打开stm32f429-hlg-v1.0board路径下的Kconfig文件,该文件是使用env工具进行开启或者关闭一些功能的配置文件,根据该文件的配置情况,通过env工具开启或者关闭某些功能以后,操作系统会自动更新系统头文件rtconfig.h,该文件位于stm32f429-hlg-v1.0目录下。 在"Hardware Drivers Config"(硬件驱动配置)配置里面主要包括以下三个配置项:
图15.Kconfig修改说明 其余的配置项里面的内容可以删掉,也可以保留,不影响。 修改后的Kconfig文件如下图所示: 图16.Kconfig修改后 说明:uart1指的是我们在UART设备里面使用串口设备的名字,就是说在这里我们用的USART1转串口功能,被注册为一个UART设备,该设备的名字是uart1。 再在Kconfig文件后面增加一个模块,我这里命名为BSP module用来配置一些我们自己增加的功能,方便env工具配置。比如后面我们添加一个led灯的bsp,就可以通过在这个模块下增加对应的led宏,方便env开启或者关闭该bsp,这样在keil工程里就会自动添加或者移除led的相关文件。 图17.增加module 四、修改编译器链接脚本 编译器链接脚本位于stm32f429-hlg-v1.0boardlinker_scripts下,共有三个:
link.icf修改情况如下图: 图18.link.icf修改后 link.lds修改情况如下图: 图19.link.lds修改后 link.sct修改情况如下图: 图20.link.sct修改后 五、修改编译器的构建脚本 修改位于stm32f429-hlg-v1.0board目录下的SConscript文件,该文件指定了各种编译器编译时使用的芯片的启动文件和芯片型号。该BSP的芯片启动文件位于stm32f429-hlg-v1.0boardCubeMX_ConfigMDK-ARM目录下,为startup_stm32f429xx.s。 修改情况如下图: 图21.SConscript修改后 六、修改工程模板 修改IAR和keil工程模版配置的目的是方便后面每次重新生成工程以后,每次打开工程不需要重新配置。模版和工程都位于stm32f429-hlg-v1.0文件内。 关于工程和模板说明如下图: 图22.stm32f429-hlg-v1.0文件夹内容说明 打开keil5模板template.uvprojx,更改芯片型号如下图: 图23.芯片型号更改 更改下载方式如下图: 图24.下载方式更改 说明: keil4和iar模版修改类似keil5。下载方式当然也可以选择其他方式,如Jlink等, 七、env工具配置
回车进入Hardware Drivers Config下,可以看到如下图信息: 图25.Hardware Drivers Config 其中能够看到我们在前面添加的 BSP module 模块。
图27.开启相关片上外设驱动 进一步进入UART外设下面,确定开启对应的UART口。如下图: 图28.开启UART1 该片上外设默认被选中是因为我们在Kconfig文件里面,把该外设的默认配置方式设置为y(default y),即是默认开启的。如果想手动开启,可以把默认方式设置为n(default n)即可。
八、env生成BSP模版工程 在env里面输入scons --target=mdk5则生成keil5工程,输入scons --target=mdk4则生成keil4工程,输入scons --target=iar则生成iar工程。输入scons --target=vsc则更新VSCode的头文件路径,方便我们直接用VSCode来写代码。 切记: 一定要输入生成工程指令,不然前面所有的工作在工程里并不能自动实现。 我们使用keil5打开对应的版本工程,看到工程结构如下图: 图30.keil5工程结构 九、BSP模版工程编译 到了这一步,就剩下编译了,前面的步骤到底对不对,编译一下就知道了。 编译有以下三种方法:
十、BSP模版下载验证 然后我们在main.h里面写如下代码: #ifndef __MAIN_H#define __MAIN_H#include #include "main.h"#define EXAMPLE_NAME "V1.0-STM32F429IGT HLG_BSP RT-Thread"#define EXAMPLE_DATE "2019-6-12"#define DEMO_VER "1.0"/**************************************************************** 函数: int main(int argc, char *argv[])* 参数: int argc, char *argv[]* 返回值:int 型 * 功能: 主函数*****************************************************************/int main(int argc, char *argv[]){ return RT_EOK;}/**************************************************************** 函数: static void bsp_show_logo(void)* 参数: 无* 返回值:无 * 功能: 获取MCU的唯一ID号,并且显示出来,再打印一些其他信息*****************************************************************/static void bsp_show_logo(void){ rt_uint32_t U_ID0 = 0, U_ID1 = 0, U_ID2 = 0; U_ID0 = *(__IO rt_uint32_t *)(0x1FFF7A10); U_ID1 = *(__IO rt_uint32_t *)(0x1FFF7A10 + 0x04); U_ID2 = *(__IO rt_uint32_t *)(0x1FFF7A10 + 0x08); rt_kprintf("nr"); rt_kprintf("**************************CPU相关信息**************************nr"); rt_kprintf("* CPU: STM32F429IGT, LQFP176, CoreFrequency: %d MHzrn", SystemCoreClock/1000000); rt_kprintf("* UID = %08x %08x %08xnr", U_ID2, U_ID1, U_ID0); rt_kprintf("**************************例程相关信息*************************nr"); rt_kprintf("* DemoName : %srn", EXAMPLE_NAME); rt_kprintf("* DemoVersion : %srn", DEMO_VER); rt_kprintf("* DemoDate : %srn", EXAMPLE_DATE); rt_kprintf("* STM32CubeMX : (STM32CubeMX FW_F4 V1.24.1)rn"); rt_kprintf("* rn"); rt_kprintf("* QQ : 358445145 rn"); rt_kprintf("* Email : 358445145@qq.com rn"); rt_kprintf("*************************************************************nr");}/* 导出bsp_show_logo至FinSH终端 */MSH_CMD_EXPORT(bsp_show_logo, show STM32F4IGTX logo); 编译下载之后,在终端里面输入help,或者按Tab键,可以看到暂时FinSH终端支持的指令。如下图: 图34.FinSH终端 其中红色框里面的是我们刚刚导出至终端的命令。 在终端里输入bsp_show_logo回车,我们将会看到如下信息: 图35.FinSH终端logo信息 总结 到这里一个新的BSP模版就彻底的建立好了,后面我们添加的任何应用程序,无非就是在这个基础上增加一些文件而已,不用再次建立模版。最最最最大的好处是,以后我们把添加的任何应用程序,只要放入我们的bsp_src(用户源文件)和bsp_inc(用户头文件夹)文件夹里面,然后在stm32f429-hlg-v1.0board下的Kconfig文件里设置好相应的宏,再在stm32f429-hlg-v1.0applications下的SConscript里面添加该宏和对应的源文件,那么使用env可以非常方便的建立keil工程。简直不能再好用。 官网参考链接 RT-Thread官网 env用户手册 env构建工具 STM32 系列 BSP 制作教程 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 00:14 , Processed in 0.940301 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号