安装好Clion与CubeMX后,安装openOCD与arm-none-eabi-gcc,并录入系统变量。

openOCD是开源的嵌入式调试与烧录工具,其中包含了仿真器与芯片的相关配置。

arm-none-eabi-gcc是基于GCC的交叉编译器,专门用于编译ARM架构的嵌入式系统。

首先进入Clion,新建一个STM32CubeMX项目。

创建前可能会需要openOCD的目录,将openOCD安装目录下的bin/openocd填入即可。

创建完项目后进入CubeMX,新建一个项目,我们希望使用STM32F103C8T6,通过点亮板载led来进行实验。

在CubeMX中对GPIO与SYS进行配置。

查阅资料得知,板载led连接的是PC13引脚。

对GPIO配置为输出(GPIO_Output),以便点亮led;对SYS配置为Serial Wire,否则只能烧录一次代码。

最后保持项目路径与Clion一致,点击generate code生成代码

回到Clion可以看到根目录中已经有了,进入编辑配置,添加openOCD的配置:

此时界面下方会提示“缺失配置文件”,我们回到根目录新建config文件夹,根据你使用的仿真器类型,在config下新建一个.cfg配置文件。我这里使用的是stlink-v2。代码示例如下:

# choose st-link/j-link/dap-link etc.
#adapter driver cmsis-dap
#transport select swd
source [find interface/stlink-v2.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000

也可以前往openOCD根目录下的share文件夹中寻找示例。
这时我们就可以在Clion中写嵌入式代码了。

进入Core/Src/main.c,这里是项目主程序。
其中已经包含了自动生成的部分代码,包括hal库与系统的初始化、GPIO的初始化。
我们在main函数中的while循环里写入点亮led的代码。

int main(void){

  HAL_Init(); // HAL初始化

  SystemClock_Config(); // 系统时钟初始化

  MX_GPIO_Init(); // 初始化GPIO

  while (1){
    // --- 点亮 LED (设置 PC13 为低电平) ---
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // RESET = 低电平
    HAL_Delay(100); // 停顿100毫秒

    // --- 熄灭 LED (设置 PC13 为高电平) ---
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);   // SET = 高电平
    HAL_Delay(100);
  }
}

准备好我们的开发板与stlink,用杜邦线将其正确连接后,将stlink与电脑连接。

保存后构建并使用openOCD运行,将代码烧录进板子中。按下板子上的复位,led就会开始闪烁,我们的代码已经在开发板上运行了。

Logo

一站式 AI 云服务平台

更多推荐