Clion中使用C/C++开发stm32程序

前言

从刚开始学习阶段,一直是用的keil5开发stm32程序,自从看到稚晖君推荐的CLion开发嵌入式程序后,这次尝试在CLion上开发stm32程序。

1、配置CLion用于STM32开发的环境

这里我就不详细写了,没必要重新写,网上教程很多,这里我主要参考的是稚晖君的文章,我是参考大佬写的文章一步一步配置成功的。 【教程】手把手教你用Clion进行STM32开发【如何优雅の进行嵌入式开发】 - 知乎 (zhihu.com)

以及几个其他几位博主的文章:

配置CLion用于STM32开发【优雅の嵌入式开发】 - 知乎 (zhihu.com)

Clion&&STM32环境配置教程(优雅开发STM32)_sailhang的博客-CSDN博客

2、C与C++程序之间的相互调用

由于C和C++的特性不同,一个是面向过程的语言,一个是面向对象的语言。因此,C++中的很多特性,比如函数的重载,在使用时就给我们带来了很大的便利。而为了实现C++中的这些特性,程序在编译后就会对函数"改名",比如在程序定义一个函数后,经过C++编译器和C编译器编译后的函数名不一样。

正是这两种语言编译方式的不同,就会导致两种程序在调用的时候出现错误。因此就需要我们采用C++中的指令**extern "C"**来实现两种语言文件的互相调用。

cpp 复制代码
#ifdef __cplusplus
extern "C" {
#endif
 
//这里包含的头文件包括:其他c语言的头文件
#include "main.h"
#include "gpio.h"
void test(void);

#ifdef __cplusplus
}

#include "my_cpp.h"
//这里extern "C"外面包括c++自身的头文件

#endif

注意:extern "C" 关键字是在C++程序中使用的。

3、使用keil5开发C/C++程序

这里主要注意:确认Micro LIB处于不启用的状态,因为MicroLIB为非标准的精简库,会与标准C++产生冲突

我看网上其他人说要在工程的设置中为编译参数增加--cpp11来启用C++编译器,但是经过我实践,发现不用加程序一样可以运行,不知道为什么。

4、使用CLion开发C/C++程序

CLion中组织编译规则都是基于CMakeLists.txt文件的,只需要知道怎么在这个文件里面添加源码目录和include文件夹的路径就行,如图:

bash 复制代码
include_directories(
        Core/Inc
        UserApp
// 其他include目录
)


file(GLOB_RECURSE SOURCES
        "startup/*.*"
        "Drivers/*.*"
        "Core/*.*"
        "UserApp/*.*"
        "3rdParty/*.*"
        // *.*表示通配符
        )
相关推荐
Wallace Zhang2 小时前
STM32F103_Bootloader程序开发11 - 实现 App 安全跳转至 Bootloader
stm32·嵌入式硬件·安全
GodKK老神灭2 小时前
STM32 CCR寄存器
stm32·单片机·嵌入式硬件
懒惰的bit9 天前
STM32F103C8T6 学习笔记摘要(四)
笔记·stm32·学习
HX科技10 天前
STM32给FPGA的外挂FLASH进行升级
stm32·嵌入式硬件·fpga开发·flash·fpga升级
Li Zi10 天前
STM32 ADC(DMA)双缓冲采集+串口USART(DMA)直接传输12位原始数据到上位机显示并保存WAV格式音频文件 收藏住绝对实用!!!
经验分享·stm32·单片机·嵌入式硬件
循环过三天10 天前
1.2、CAN总线帧格式
笔记·stm32·单片机·嵌入式硬件·学习
循环过三天10 天前
1.1、CAN总线简介
笔记·stm32·单片机·嵌入式硬件·学习
麻辣长颈鹿Sir10 天前
2、结合STM32CubeMX学习FreeRTOS实时操作系统——任务
stm32·嵌入式硬件·学习
麻辣长颈鹿Sir10 天前
3、结合STM32CubeMX学习FreeRTOS实时操作系统——队列
stm32·嵌入式硬件·学习
小宋同学在不断学习10 天前
STM32 串口通信②:蓝牙模块HC-05控制单片机
stm32·单片机·嵌入式硬件