这个大伙应该都有写  纯属也是给自己 总结啊 这里说俩种方式 一种还是keil 一种是clion

一、 clion

使用CLion开发STM32 并烧录

环境配置

STM32CubeMX

正常安装即可。 下载链接

MinGW

下载安装器。 下载链接

选择安装

嵌入式の烧录程序_单片机

 改变一下路径

嵌入式の烧录程序_stm32_02

 等待下载完成后点击Continue进入下一步,勾选Basic Setup里的全部组件,点击Apply Changes下载。过程会很漫长,请耐心等待。

嵌入式の烧录程序_嵌入式硬件_03

配置环境变量,在Path里添加MinGWbin文件夹:

嵌入式の烧录程序_嵌入式硬件_04

打开命令行,输入gcc -v,出现类似下图信息即为安装成功

嵌入式の烧录程序_单片机_05

OpenOCD

下载最新版本。 下载链接

嵌入式の烧录程序_stm32_06

下载后解压,将文件夹改名为OpenOCD并放置到一个目录,这个目录将在下文中Clion中配置。

arm-none-eabi-gcc

下载zip格式的。 下载链接

 

嵌入式の烧录程序_重定义_07

下载后解压,放置到一个目录,这个目录将在下文中Clion中配置。

配置环境变量,在Path里添加所在文件夹的bin文件夹:

嵌入式の烧录程序_嵌入式硬件_08

 打开命令行,输入arm-none-eabi-gcc -v,出现类似下图信息即为安装成功

嵌入式の烧录程序_单片机_09

Clion

Clion可以去Jetbrain下载,学生可以免费使用。下载安装好之后配置工具链,添加如下图的路径

嵌入式の烧录程序_stm32_10

新建项目

新建STM32CubeMX项目

嵌入式の烧录程序_重定义_11

选择用CubeMX打开

嵌入式の烧录程序_配置文件_12

更换芯片型号

嵌入式の烧录程序_嵌入式硬件_13

 将项目名改成前文Clion创建的工程名,将IDE改成STM32CubeIDE,然后点击生成代码,弹出是否overwrite选择yes

嵌入式の烧录程序_单片机_14

代码生成好之后点击Close,回到Clion,会弹出来这个对话框,这里先选择取消,后面再添加。

嵌入式の烧录程序_stm32_15

 打开设置,确定一下cmake为以下配置:

嵌入式の烧录程序_单片机_16

点击锤子按钮编译,如以上配置无误即可生成hexbin

嵌入式の烧录程序_重定义_17

 对于一个项目,不可避免地会用到第三方库或者自己创建的.c/.h文件,也就是需要修改CmakeList文件。但这里的CMakelist开头写明了#此文件从模板自动生成! 请勿更改!,其原因为在每一次使用CubeMX生成代码时此文件会被覆盖,用户的代码将不会被保存。所以需要修改模板文件CMakeLists_template.txt

嵌入式の烧录程序_stm32_18

如上图所示,需要增加头文件及编译文件。对于我们新增的编译文件,可以新增一个MY_SOURCE并在add_executable中添加${MY_SOURCES},可以避免修改原模板。

file里的GLOB_RECURSE意思是对该目录下的所有子文件进行递归添加。而GLOB则不进行递归,只在当前文件夹下查找。可以根据需求选择用哪种。*.*为通配符,意为添加文件夹下的所有文件。

烧录 

如使用STlink进行烧录,需要添加配置文件。在项目根目录下新建一个stlink.cfg,添加如下内容

嵌入式の烧录程序_stm32_19

若使用的不是STM32F1或者不是STlink仿真器,可以到OpenOCD安装目录的share\openocd\scripts下寻找对应的配置。芯片在target文件下,仿真器在interface文件夹下。

然后点击编辑配置

嵌入式の烧录程序_单片机_20

添加刚刚的配置文件

嵌入式の烧录程序_重定义_21

 然后点击三角形烧录固件

嵌入式の烧录程序_嵌入式硬件_22

 查看寄存器

调试的时候点击寄存器,没加载svd文件是看不到的,这个文件在keil中可以找到

嵌入式の烧录程序_stm32_23

 路径如下:

嵌入式の烧录程序_重定义_24

然后全选即可显示。

代码优化

实测默认的代码优化会造成许多问题。修改模板文件CMakeLists_template.txt,优化等级均改为-O0

嵌入式の烧录程序_单片机_25

然后在Cubemx中重新生成代码以刷新Cmakelist文件。

重定向printf

与在keil5中重定义fputs()函数不一样,在GCC编译器中需要重定义的是__io_putchar(int ch)

在main中添加如下代码并引入头文件#include <stdio.h>

嵌入式の烧录程序_嵌入式硬件_26

 然后即可使用printf函数。且此段代码在Keil和Clion中均可正常编译运行。


二、keil

回来再写这个 应该都会

未完待续....