ST MP157基于STM32CubeIDE的M4应用程序开发

295 阅读3分钟

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 基本使用

image.png image.png image.png

2.2 编译工程

image.png image.png

2.3 调试验证

  • ①、ST LINK 通过 USB 线连接电脑,且仿真器的红灯常亮。然后用 10P 的灰排线连接到开发板的 JTAG 座上。
  • ②、确保开发板已经正常供电,蓝色电源灯亮起。
  • ③、BOOT 设置为 001,设置为 MCU 启动,也就是 M4 内核启动。BOOT 的拨码开关拨上去为 1,拨下来为 0。 image.png image.png image.png
  • Load Mode 选择 thru JTAG/SWD link(Engineering mode),此项设置,一般是根据实际接线,如果用的是SWD接口,则选中SWD,若是JTAG,则选JTAG,调试探头选择ST-LINK(OpenOCD),我们用ST-Link 来进行调试。其它选项保持默认不变,然后点击 AplyDebug 开始调试 image.png image.png

2.4 生成工程

  • 按下键盘的―Ctrl+S组合键保存保存LED.ioc 文件,系统开始生成初始化代码。
  • 接下来要注意勾选Generate peripheral initialization as a pair of ".c/.h' files per peripheral选项,这样可以独立生成对应外设的初始化.h 和.c 文件(这么做也是为了不让外设的初始化代码生成在 main.c 文件中,方便查看,也避免 main.c 文件变得臃肿): image.png
  • 在 CM4 工程下新建 BSP 文件夹,BSP 文件夹下有 led.c 文件和 Include/led.h 文件,添加完以后,记得在工程中将源文件和工程关联 image.png

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 实现控制逻辑 image.png
  • 回调函数是 weak 弱定义,弱就是表示此函数可以被用户进行重写(重新定义),但是不能直接修改此弱定义函数。如果用户在其它地方重新定义了一个同名函数,最终编译器编译的时候,就会选择用户定义的函数 image.png

3.2 应用开发

  • 可视化开发 image.png image.png image.png image.png
  • gpio.c image.png image.png
  • gpio.h image.png
  • key.c image.png image.png
  • key.h image.png
  • main.h image.png
  • mian.c image.png