这个大伙应该都有写 纯属也是给自己 总结啊 这里说俩种方式 一种还是keil 一种是clion
一、 clion
使用CLion开发STM32 并烧录
环境配置
STM32CubeMX
正常安装即可。 下载链接
MinGW
下载安装器。 下载链接
选择安装
改变一下路径
等待下载完成后点击Continue
进入下一步,勾选Basic Setup
里的全部组件,点击Apply Changes
下载。过程会很漫长,请耐心等待。
配置环境变量,在Path里添加MinGW
的bin
文件夹:
打开命令行,输入gcc -v
,出现类似下图信息即为安装成功
OpenOCD
下载最新版本。 下载链接
下载后解压,将文件夹改名为OpenOCD
并放置到一个目录,这个目录将在下文中Clion中配置。
arm-none-eabi-gcc
下载zip格式的。 下载链接
下载后解压,放置到一个目录,这个目录将在下文中Clion中配置。
配置环境变量,在Path里添加所在文件夹的bin
文件夹:
打开命令行,输入arm-none-eabi-gcc -v
,出现类似下图信息即为安装成功
Clion
Clion可以去Jetbrain下载,学生可以免费使用。下载安装好之后配置工具链,添加如下图的路径
新建项目
新建STM32CubeMX项目
选择用CubeMX打开
更换芯片型号
将项目名改成前文Clion创建的工程名,将IDE改成STM32CubeIDE
,然后点击生成代码,弹出是否overwrite选择yes
代码生成好之后点击Close,回到Clion,会弹出来这个对话框,这里先选择取消,后面再添加。
打开设置,确定一下cmake为以下配置:
点击锤子按钮编译,如以上配置无误即可生成hex
及bin
对于一个项目,不可避免地会用到第三方库或者自己创建的.c/.h
文件,也就是需要修改CmakeList
文件。但这里的CMakelist
开头写明了#此文件从模板自动生成! 请勿更改!
,其原因为在每一次使用CubeMX生成代码时此文件会被覆盖,用户的代码将不会被保存。所以需要修改模板文件CMakeLists_template.txt
。
如上图所示,需要增加头文件及编译文件。对于我们新增的编译文件,可以新增一个MY_SOURCE
并在add_executable
中添加${MY_SOURCES}
,可以避免修改原模板。
file里的GLOB_RECURSE
意思是对该目录下的所有子文件进行递归添加。而GLOB
则不进行递归,只在当前文件夹下查找。可以根据需求选择用哪种。*.*
为通配符,意为添加文件夹下的所有文件。
烧录
如使用STlink进行烧录,需要添加配置文件。在项目根目录下新建一个stlink.cfg
,添加如下内容
若使用的不是STM32F1或者不是STlink仿真器,可以到OpenOCD安装目录的share\openocd\scripts
下寻找对应的配置。芯片在target
文件下,仿真器在interface
文件夹下。
然后点击编辑配置
添加刚刚的配置文件
然后点击三角形烧录固件
查看寄存器
调试的时候点击寄存器,没加载svd文件是看不到的,这个文件在keil中可以找到
路径如下:
然后全选即可显示。
代码优化
实测默认的代码优化会造成许多问题。修改模板文件CMakeLists_template.txt
,优化等级均改为-O0
:
然后在Cubemx中重新生成代码以刷新Cmakelist文件。
重定向printf
与在keil5中重定义fputs()
函数不一样,在GCC编译器中需要重定义的是__io_putchar(int ch)
。
在main中添加如下代码并引入头文件#include <stdio.h>
然后即可使用printf
函数。且此段代码在Keil和Clion中均可正常编译运行。
二、keil
回来再写这个 应该都会
未完待续....