- stm32 on macOS
board = genericSTM32F407IGT6
keil项目移植到pio项目
- 为什么要移植?
- keil的IDE太落后,gb2312编码。。。
- pio主要用的是vscode的pio插件,而vscode是世界上最好的编辑器=)
新建pio项目
- 下载好pio插件,可能有一些关于python环境和core的报错自行解决一下
- 新建项目,如下
移植keil项目文件
左边是新建的pio项目,右边是原来的keil项目
Src Inc
放到对应的 src include
中即可
注意,Drivers
中的内容,pio会在编译的时候自动放在 .pio/build
,如下
按照上面的方式,默认ini配置下,直接编译就没有错误,并不需要在ini中更改设置。
编译和烧录都在VSCode左下角的底栏:
烧录
首先需要修改ini文件,配置对应的烧录协议,实验课用的是stlink的仿真器,一般可能是serial,按自己情况来:
正常按上文配置,直接点VSCode左下角的烧录即可:
方法二:openocd手动烧录
openocd工具连接开发板
brew install openocd
找到 OpenOCD 的脚本目录,其中存放了 OpenOCD 所用的各种配置脚本
/opt/homebrew/Cellar/open-ocd/0.12.0_1/share/openocd/scripts
scripts
目录下常见的子目录及其作用:
子目录 | 内容 | 作用 |
---|---|---|
board/ | 各种开发板配置文件(如 stm32f4discovery.cfg) | 一键配置目标板的调试环境 |
interface/ | 调试器接口配置(如 J-Link, ST-Link) | 告诉 OpenOCD 用什么调试器 |
target/ | 目标芯片的配置(如 stm32f4x.cfg) | 配置具体芯片型号与架构 |
utils/ | 一些额外的脚本工具 | 可选工具或宏命令 |
cpld/, dsp/ 等 | 特定硬件类别支持 | 针对特殊硬件平台 |
e.g. OpenOCD 连接 STM32F407 开发板(例如使用 ST-Link),需要运行命令如下:
openocd \
-f interface/stlink.cfg \
-f target/stm32f4x.cfg
连接命令:
openocd \
-f /opt/homebrew/Cellar/open-ocd/0.12.0_1/share/openocd/scripts/interface/stlink-v2-1.cfg \
-f /opt/homebrew/Cellar/open-ocd/0.12.0_1/share/openocd/scripts/target/stm32f4x.cfg
可以看到4444端口在监听telnet,我们用telnet连接4444:
并输入烧录命令:
flash write_image erase /Volumes/44/embedded/pio/beep-pio/.pio/build/genericSTM32F407IGT6/firmware.bin 0x08000000
/Volumes/44/embedded/pio/beep-pio/.pio/build/genericSTM32F407IGT6/firmware.bin
是编译生成的文件的路径
注意,如果板子可能已经启动了程序,需要reset才能烧录,具体操作如下:
reset halt # 重置 暂停
flash write_image erase /Volumes/44/embedded/pio/beep-pio/.pio/build/genericSTM32F407IGT6/firmware.bin 0x08000000 # 烧录
reset run # 启动
补充
mac查看stlink是否已经连接:
lsusb # brew install usbutils
REF
← Previous postfrp配置内网服务器ssh穿透