参考链接
步骤
bsp 模板
复制 bsp/stm32/libraries/templates 下面复制你的型号的模板 到 bsp/stm32/下,改成你喜欢的名字
配置 gcc
rtconfig.py, 配置编译器
1 | if CROSS_TOOL == "gcc": |
1 | scons -c; scons --dist |
生成 cubeMX 项目
创建跟你 mcu 一样的项目,修改配置,生成代码。
复制 Inc 和 Src 目录到 board/CubeMX_Config 下覆盖
从 board/CubeMX_Config 里面找到 main.c,复制 SystemClock_Config() 到 board/board.c 里面,这是唯一需要手工复制的函数,如果不复制,可能会出现烧录以后失去响应的问题
时钟配置
强烈建议看一下原理图,里面 mcu 相关的晶振部分的频率,在 cubeMX 的时钟部分的 HSE 和 LSE 的频率,一定要和原理图里面的一致
串口引脚配置
注意看原理图里面的串口引脚,是否有重新映射的引脚,不然无法通信
配置 Kconfig
修改 board/Kconfig,搜索 config SOC_STM32, 改为相应的芯片型号
如果需要 i2c 等配置,而当前的 Kconfig 里面没有的话,可以从别的 bsp 里面借鉴一下
flash 和 ram 大小相关
注意真实的大小
mcu 具体的 flash 和 ram 大小,最好看一下芯片手册,比如 f407igt6 里面,有 64k 的内存是保留不能使用的
可以使用 segger 公司的 JFlashLiteExe 查看具体芯片的 flash 和 ram 大小, v6.86g 这个版本是最后一个能看内存大小的版本,推荐使用
SConscript
修改 board/SConscript, 看看芯片等信息有没有错误
搜索 CPPDEFINES, 改成你的芯片对应的型号,具体写法参考 CPPDEFINES 上面的内容里面改
根据你的芯片型号,修改下面对应的汇编启动文件 xxxxxx.s, 如果不知道用哪个,可以用 cubeMX 生成项目以后找,看用的是哪个文件
1 | if rtconfig.CROSS_TOOL == 'gcc': |