当前位置: 首页 > news >正文

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” 来实现两种语言文件的互相调用。

#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文件夹的路径就行,如图:

include_directories(Core/IncUserApp
// 其他include目录
)file(GLOB_RECURSE SOURCES"startup/*.*""Drivers/*.*""Core/*.*""UserApp/*.*""3rdParty/*.*"// *.*表示通配符)

http://www.lryc.cn/news/188152.html

相关文章:

  • JavaScript Web APIs第五天笔记
  • [ICCV-23] Paper List - 3D Generation-related
  • Transformer为什么如此有效 | 通用建模能力,并行
  • 【初识Jmeter】【接口自动化】
  • C:数组传值调用和传地址调用
  • Python数据容器——字典的常用操作(增、删、改、查)
  • JavaScript入门——(5)函数
  • 数据库sql查询成绩第二高
  • 十五、异常(5)
  • 途虎养车上市、京东养车“震虎”,如何突围汽车后市场?
  • 【算法与数据结构】--算法基础--算法入门
  • AnyDesk密钥
  • C#(Csharp)我的基础教程(二)(我的菜鸟教程笔记)-属性和字段的探究与学习
  • Programming abstractions in C阅读笔记:p176-p178
  • LeetCode-496-下一个更大元素
  • C++中的Lambda表达式
  • dockerfile搭建lnmp
  • python之数据库操作详解
  • 完成flex布局与float布局
  • ThinkPHP团购拼购商城源码/带分销团购商城网站源码/完美版
  • awvs 中低危漏洞
  • openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw
  • 并不止于表面理论和简单示例——《Python数据科学项目实战》
  • skywalking功能介绍
  • c++桥接模式,中介者模式应用实现状态跳转
  • 【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
  • 亘古难题——前端开发or后端开发
  • Notepad++提取含有特定字符串的行
  • host配置
  • ```,```中间添加 # + 空格 + 空行后遇到的底部空行出错,书接上回,处理空行