这两天尝试用Clion修改原来 野火霸道V2开发板 的Keil例程工程,碰到好多问题,总算跑通了,可以正常编译下载,串口打印。这些碰到的问题都记录在之前的文章里。
最后我得到了这个工程,将它命名为F103_Template(红色部分是下载到开发板成功时的控制台日志):
我这个跑通的CLion工程是在原来的 USART1接发 Keil工程的基础上转换过来的。
日后继续看B站视频,但要用Clion学习其他没有学完的例程。所以配套的Keil例程都要转换成CLion工程。这里整理一下怎样将某个Keil工程快速转换成CLion工程。这个过程会用到上面已经跑通了的CLion工程。
注:之前已经写了文章怎样把Keil工程转化成CLion工程,这篇文章的目的是为了尽量简化将Keil工程转化为CLion工程的繁琐流程(尽管还是不够精简,多希望有个批处理文件可以一键修改😂)。
下面以
一、用CLion创建工程
1.新建并链接STM32CubeMX
File → New → Project → STM32CubeMX
填入自己的项目名称,请避免用中文。
等待STM32CubeMX启动:
选择适合自己开发板的配置文件(我选择的是自制的,相关问题移步参考文章1):
点击打开STM32CubeMX
选择对应的芯片型号,开始创建Project:
Project Manager里如下设置:
最后点击GENERATE CODE生成项目代码,选择Yes:
至此可以关闭CubeMX软件。
GENERATE CODE之前的文件夹:
GENERATE CODE之后的文件夹:
2.用修改文件的方式生成工程
要生成工程其实也可以不用这种方式,可以直接拷贝之前整理好的模板工程F103_Template,修改 project 相关文件(貌似是.cproject和.project这两个文件)内的信息,使之成为新的工程,但涉及到的文件修改比较繁杂,等我研究试好了再总结一下看哪一种更便捷。
二、拷贝整理好的目录模板并添加新文件
将生成的文件夹下的Core文件夹和Drivers文件夹删除,因为要用到的标准库文件,我们自己已经整理好了一份,把这一份删除。
F103_Template文件夹里有整理好的文件目录,就是Libraries文件夹和User文件夹,可以拿来直接拷贝给新工程用。
然后添加Keil工程中的其它额外的.h和.c文件进来。放到User的Inc和Src里面。不过记得要把一些头文件包含的语句修改一下,因为我们全都放在Inc和Src里了,只保留文件名即可。例如:
例如,我转换下列Keil工程:
把文件搬到CLion工程里:
三、修改CMakeList
用CLion打开工程,找到CMakeLists.txt文件,找到下列两行
修改为:
其实就是目录修改一下,因为我们整理了目录,和自动生成的目录不一样了。
include_directories(Libraries/CMSIS/inc Libraries/FWlib/inc User/Inc)
file(GLOB_RECURSE SOURCES "libraries/*.*" "User/*.*")
然后控制台刷新CMake:
如果不改这这两处,则会出现下列提示:
CMake Error: CMake can not determine linker language for target: Demo.elf
四、编译/下载工程
点击build:
连接开发板到电脑,开发板上电,CLion中点击run(因为我的CLion已经配置好了OCD):
下载成功!!!
验证程序效果:
/*********************************************************************************************/
【*】程序简介-工程名称:DMA 存储器到外设模式实验
-实验平台: 野火STM32 霸道 开发板【 !】功能简介:
利用DMA向串口发送大量的数据,同时让CPU控制LED的状态
【 !】实验操作:
把编译好的程序下载到开发板。程序运行后在串口调试助手可接收到大量的数据,同时开发板上RGB彩色灯不断闪烁。
开发板LED灯正常闪烁。
五、补充说明
Libraries/CMSIS/inc/stm32f10x.h文件里的两处宏定义很重要,因为我整理好的目录里这个文件是修改好了的,所以没特别提出来。
#define STM32F10X_HD
#define USE_STDPERIPH_DRIVER
参考文章: