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/Inc
        UserApp
// 其他include目录
)


file(GLOB_RECURSE SOURCES
        "startup/*.*"
        "Drivers/*.*"
        "Core/*.*"
        "UserApp/*.*"
        "3rdParty/*.*"
        // *.*表示通配符
        )

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Clion是一个非常优秀的跨平台C/C++集成开发环境(IDE),可以用于开发各种嵌入式系统的应用程序,包括STM32。下面是在Clion开发STM32 IAP例程的步骤: 1. 安装工具链 首先,需要在您的电脑上安装ARM GCC工具链。可以从GNU Arm Embedded Toolchain官网下载。下载完成后,将其添加到系统路径。 2. 创建STM32工程 在Clion创建新的CMake项目,并添加STMCube库。确保使用正确的芯片型号和IAP实现。 3. 配置CMakeList.txt文件 打开CMakeList.txt文件,并添加以下内容: ``` cmake_minimum_required(VERSION 3.17) project(IAP) set(CMAKE_CXX_STANDARD 14) # 添加头文件路径 include_directories( Inc Drivers/STM32F4xx_HAL_Driver/Inc Middlewares/Third_Party/FatFs/src Middlewares/Third_Party/FreeRTOS/Source/include Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F Middlewares/ST/STM32_USB_Device_Library/Core/Inc Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc ) # 添加源文件路径 set(SOURCE_FILES Src/main.c Src/stm32f4xx_it.c Src/system_stm32f4xx.c Src/usbd_cdc_if.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c Middlewares/Third_Party/FatFs/src/ff.c Middlewares/Third_Party/FatFs/src/ff_gen_drv.c Middlewares/Third_Party/FatFs/src/option/syscall.c Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c Middlewares/Third_Party/FreeRTOS/Source/list.c Middlewares/Third_Party/FreeRTOS/Source/queue.c Middlewares/Third_Party/FreeRTOS/Source/tasks.c Middlewares/Third_Party/FreeRTOS/Source/timers.c Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portasm.s Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c ) # 添加链接库 set(LINKER_FILES "-T${CMAKE_SOURCE_DIR}/STM32F429ZITx_FLASH.ld" "-Wl,--gc-sections" "-u_printf_float" "-u_printf_long_long" "-lm" ) # 设置芯片型号 add_definitions(-DSTM32F429xx) # 添加可执行文件 add_executable(${PROJECT_NAME} ${SOURCE_FILES}) # 添加链接库 target_link_libraries(${PROJECT_NAME} ${LINKER_FILES}) ``` 4. 编写代码 在Src目录下编写IAP代码。根据具体芯片型号和IAP实现,代码会有所不同。 5. 构建项目 在Clion构建项目,并生成可执行文件。将可执行文件烧录到您的STM32芯片。 6. 测试 测试IAP是否能够正常运行。如果一切正常,您就可以使用IAP来升级您的STM32应用程序了。 以上就是在Clion开发STM32 IAP例程的步骤。希望对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洲洲不是州州

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值