STM32F103RCT6-RTThread-BSP制作

STM32F103RCT6-RTThread-BSP制作

软件环境:
STM32CubeMx(用来制作不同芯片的BSP)
IAR8.3(笔者使用的IDE,也可以是keil,mdk)
ENV(用来编译内核代码等)

在文章开始之前,需要了解内核BSP文件夹中一些非常重要文件:

**Kconfig:**编译内核时,告诉编译器要编译代码所在的路径,复制别人bsp时千万不能漏,并且要根据自己的文件夹结构修改路径。
STM32F103RCT6-RTThread-BSP制作**SConscript:**编译生成IAR项目的一些设置STM32F103RCT6-RTThread-BSP制作rtconfig.h: 最终你通过ENV工具的menconfig命令配置好驱动后,通过scons --target=iar重新生成IAR工程,再使用pkgs --update命令使配置生效,生效的结果就是rtconfig.h文件内容改变。

一:了解RTThread源码的目录结构(重点bsp目录)
STM32F103RCT6-RTThread-BSP制作
bsp目录下为所有以及支持的厂家的芯片,在制作bsp时,用户挑选一份相似的bsp来修改。
STM32F103RCT6-RTThread-BSP制作
STM32F103RCT6-RTThread-BSP制作
二:开始制作BSP
源码下载:https://blog.****.net/m0_37697335/article/details/89390209
推荐教程:https://blog.****.net/weixin_39044350/article/details/105929783

注意事项:

  1. 别忘了pkgs --update(其实我也不确定这个是不是只是升级组件包的命令,但是我好像确实是在使用这个命令后rtconfig.h文件才被修改的,不清楚是不是有延迟所导致)
  2. CubeMX版本不同,生成的文件夹结构也不同,总之我们要确保生成的四个文件夹(INC,SRC,CMSIS,STM32F1xx_HAL_Driver)在前文所说的路径下;之前我的CubeMx是旧版本的,好像不会生成CMSIS,STM32F1xx_HAL_Driver这两个文件夹,而新的工程只有***_ll_exit.h文件,没有***_hal_exit.h文件,所以编译的时候会报错。建议更新CubeMx软件,并且将文件复制到对应的位置。
    STM32F103RCT6-RTThread-BSP制作
    3.启动文件要选对。比如我的芯片是stm32f103RCT6,但是文件夹中没有对于的.s文件;RC的c在b-e之间,所以选择*e.s文件。

三:调试方法:
在bsp制作完成后,编译项目可能会通不过。比如我的生成文件中没有没有某某函数的声明,但是他又调用了。可以跳转到这个函数definition位置,发现在另一个头文件中包含了,这个函数的定义和声明,于是头文件添加进来,解决了。

四:一点疑问
在我使用串口的过程中,发现内核在串口初始化的时候,停止位stop_bit_1在头文件中被define为0 ;难道为0代表一位停止位么?
五:制作完成的BSP文件已上传
https://download.****.net/download/qq_38944028/12817118