1 STM32CubeIDE背景
STM32CubeIDE是 ST 于 2019 年新推出的一款多功能的集成开发工具,它集成了TrueSTUDIO 和 STM32CubeMX插件,并基于 GDB 进行调试,它允许集成数百个现有插件,这些插件完成 Eclipse 的功能。TrueSTUDIO插件是一款建立在 Eclipse CDT、GCC 和 GDB 的 C/C++集成开发工具,其具有项目创建和管理、代码编辑、代码编译以及代码在线调试等功能。STM32CubeMX插件具有图形化配置功能,可以直观地选择 MCU/MPU 型号、动态配置引脚和设置时钟树、动态设置外围设备和中间器件的模式,可以自动处理引脚冲突和生成初始化代码。- TrueSTUDIO 和STM32CubeMX 的强强联手,使 STM32CubeIDE 得以和 MDK 进行媲美。
STM32CubeIDE 完全开源,并且跨平台,目前支持 Windows、Linux 和 macOS 多个操作系统(64 位版本)
2 STM32CubeIDE使用
2.1 基本使用
2.2 编译工程
2.3 调试验证
- ①、ST LINK 通过 USB 线连接电脑,且仿真器的红灯常亮。然后用 10P 的灰排线连接到开发板的 JTAG 座上。
- ②、确保开发板已经正常供电,蓝色电源灯亮起。
- ③、BOOT 设置为 001,设置为 MCU 启动,也就是 M4 内核启动。BOOT 的拨码开关拨上去为 1,拨下来为 0。
- Load Mode 选择
thru JTAG/SWD link(Engineering mode),此项设置,一般是根据实际接线,如果用的是SWD接口,则选中SWD,若是JTAG,则选JTAG,调试探头选择ST-LINK(OpenOCD),我们用ST-Link 来进行调试。其它选项保持默认不变,然后点击 AplyDebug 开始调试
2.4 生成工程
- 按下键盘的―Ctrl+S组合键保存保存LED.ioc 文件,系统开始生成初始化代码。
- 接下来要注意勾选
Generate peripheral initialization as a pair of ".c/.h' files per peripheral选项,这样可以独立生成对应外设的初始化.h 和.c 文件(这么做也是为了不让外设的初始化代码生成在 main.c 文件中,方便查看,也避免 main.c 文件变得臃肿): - 在 CM4 工程下新建 BSP 文件夹,BSP 文件夹下有 led.c 文件和 Include/led.h 文件,添加完以后,
记得在工程中将源文件和工程关联
3 应用开发
3.1 HAL库中断回调
以 EXTI0 中断为例,如果发生中断,则进入中断服务函数 EXTI0_IRQHandler,EXTI0_IRQHandler 调用了 stm32mp1xx_hal_gpio.c 文件的 HAL_GPIO_EXTI_IRQHandler 函数,用于处理 EXTI 中断请求- EXTI0_IRQHandler通过入口参数 GPIO_Pin 判断中断来自哪个 IO 口,是上升沿还是下降沿,然后清除相应的中断标志位,最后调用回调函数
HAL_GPIO_EXTI_Rising_Callback或者 HAL_GPIO_EXTI_Falling_Callback 实现控制逻辑 回调函数是 weak 弱定义,弱就是表示此函数可以被用户进行重写(重新定义),但是不能直接修改此弱定义函数。如果用户在其它地方重新定义了一个同名函数,最终编译器编译的时候,就会选择用户定义的函数
3.2 应用开发
- 可视化开发
- gpio.c
- gpio.h
- key.c
- key.h
- main.h
- mian.c