码农知识堂 - 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. )

  • 相关阅读:
    基于SSM的校园订餐管理系统
    GSMA SGP.01协议学习
    SpringBoot整合JWT
    UWA Pipeline 2.2.1 版本更新说明
    Java并发编程第8讲——ThreadLocal详解
    关于node安装和nvm安装的问题
    用户态切换到内核态的方式
    (附源码)计算机毕业设计ssmJAVA高校田径运动会管理
    PyQt5快速开发与实战 3.4 信号与槽关联
    在window上安装redis 如何安装redis-server
  • 原文地址:https://blog.csdn.net/qq_41834692/article/details/133618132
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号