使用CLion和STM32CubeMX进行STM32开发(包含断点调试、寄存器查看和printf重定向)
文章目录
摘要
在嵌入式领域中开发以ARM公司的Cortex M内核为代表的单片机时程序员使用最多的IDE一定是Keil公司的MDK4 MDK5,而Keil已经脱离现代智能IDE,近年来IAR逐步向现代智能IDE靠近但还不足,一些芯片原厂提供了基于eclipse改装版IDE,这些工具在调试方面有优势,比如查看外设寄存器,内核寄存器,反汇编,支持多种调试器烧录固件,但在代码提示,代码跳转、代码重构、查找调用代码等等这些功能很匮乏,而Jetbrains公司的Clion是一款现代化跨平台IDE,不仅能编写传统c/c++程序,还能配合插件开发单片机程序,解决了传统嵌入式IDE的痛点。专业的嵌入式IDE是内置烧录调试工具,使用第三方IDE需要借助开源工具openocd,openocd有很多版本适配不同芯片能够满足使用。当前最热门的单片机就是stm32,得益于资料公开,有第三方板卡商家,SDK代码规范易读,甚至还有初始化代码生成工具CubeMX极大程度降低了嵌入式开发的门槛(有些国内半导体厂家的资料是传家宝见不得人),让嵌入式程序员更加注重应用。本文主要内容是使用Clion+CubeMX+arm-gcc+openocd开发stm32环境,当然不仅仅是开发stm32,只要是能使用gcc系列编译器编译代码,并配合编写编写的cmake脚本的都可以爆改适配,博主已经适配过乐鑫的ESP32、沁恒微电子的CH32。
关键字: Clion、STM32、CubeMX
环境说明
操作系统:win11 单片机:stm32f103rct6 IDE:Clion2023 代码生成器:STM32CubeMX 6.8.1 工具链:amr-gcc 固件烧录软件:openocd -20231002 调试器:ST-Linkv2
下载安装clion






下载arm-gcc



下载配置openocd



#设置使用的调试烧录器为ST-Linkv
source [find interface/stlink.cfg]
#设置使用的调试烧录器为J-link
source [find interface/jlink.cfg]
#设置使用的调试烧录器为DAP-Link
source [find interface/cmsis-dap.cfg]
# 调试接口选择swd,此类型是ST-Link专用的
transport select hla_swd
# 调试接口选择swd,此类型是J-link,DAP-Link通用
transport select swd
#设置目标芯片,选择stm32f1x,如果是f4系列的换成f4就行了其他系列以此类推
source [find target/stm32f1x.cfg]
编辑完成文件保存到openocd的文件夹,方便在clion中选择配置文件
下载安装STM23Cubemx











新建demo工程
使用CubeMX生成初始化代码







使用Clion写代码和烧录固件
创建一个嵌入式如门经典demo工程点灯



有插件且已经配置过一次情况

while (1)
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}

没有插件情况







调试
调试功能同keil相比稍逊色些,但仍然可以断点调试、查看寄存器、反汇编、查看内存、变量值
printf重定向


/* USER CODE BEGIN 1 */
int __io_putchar(int ch)
{
while ((USART1->SR & 0X40) == 0) // 等待上一次发送完
;
USART1->DR = (uint8_t)ch; //串口发送字符
return 1;
}
/* USER CODE END 1 */
/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */
/* USER CODE BEGIN WHILE */
char str[] = "demo\n";
while (1)
{
for (int i = 0; i < 5; ++i)
{
printf("%d", i);
}
printf("%s", str);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8);
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
断点调试调试




查看外设寄存器值




写在后面
如果本文对你有帮助不要吝啬你的点赞、收藏、评论、关注,你的支持将是我继续输出优质文章的动力,也欢迎嗮出你的博客一起进步
作者:韩少君