码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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” 来实现两种语言文件的互相调用。

    1. #ifdef __cplusplus
    2. extern "C" {
    3. #endif
    4. //这里包含的头文件包括:其他c语言的头文件
    5. #include "main.h"
    6. #include "gpio.h"
    7. void test(void);
    8. #ifdef __cplusplus
    9. }
    10. #include "my_cpp.h"
    11. //这里extern "C"外面包括c++自身的头文件
    12. #endif

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

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

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

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

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

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

    1. include_directories(
    2. Core/Inc
    3. UserApp
    4. // 其他include目录
    5. )
    6. file(GLOB_RECURSE SOURCES
    7. "startup/*.*"
    8. "Drivers/*.*"
    9. "Core/*.*"
    10. "UserApp/*.*"
    11. "3rdParty/*.*"
    12. // *.*表示通配符
    13. )

  • 相关阅读:
    Python装饰器进阶:深入理解与最佳实践
    钢结构设计软件:IDEA StatiCa 21.1.4.X Crack-new
    《java练级之路》类和对象,博主熬夜肝六个小时万字博客
    大一学生Web课程设计 美食主题网页制作(HTML+CSS+JavaScript)
    海艺互娱与亚马逊云科技合作,在生成式AI领域探索更多的训练方向
    树状数组解题报告
    供应脂质体形成材料DSPE-PEG-Thiol,DSPE-PEG-SH
    10.用户登录——什么是token、生成token、token获取用户信息免密登录、登录装饰器
    linux环境下查询主板、CPU、内存等硬件信息
    Flutter实战-自定义键盘(三)
  • 原文地址:https://blog.csdn.net/qq_41834692/article/details/133618132
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号