用Clion进行stm32标准库开发

本文介绍了如何将Clion改造成适用于STM32标准库开发的编辑器,通过CubeMX生成基本文件,整理项目结构,修改CMakeLists以包含库和源文件,设置宏定义,解决编译和链接问题。最后,配置OpenOCD工具链实现程序下载,并建议使用固定工程模板以避免CMakeLists修改导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在b站看了稚晖君写的教程,打算也弄一下试试,照着他写的步骤都做完了,但是由于本人对标准库开发比较熟悉,不了解hal库开发,所以萌生了将Clion改造为能使用标准库开发版本的编辑器的想法。大致的原理是利用cube生成相关startup、.ioc、CMakeLists文件后,导入标准库文件,修改CMakeLists,实现build和下载功能。

  1. 下载cube、OpenOCD(CLion2021版自带)、MinGW、gcc-arm-none-eabi
  2. 利用cube生成基本文件,并按照习惯整理文件。

        3.修改CMakeLists,主要是修改包含库文件include_directories()和源文件file(),还有加上宏定义USE_STDPERIPH_DRIVER和STM32F10X_HD(这个也可以直接在stm32f10x.h中#define)

        

       

CLion中配置STM32F103的标准库开发环境需要完成一系列步骤,包括安装必要的工具链、设置项目结构以及导入标准外设驱动库等。以下是详细的步骤: ### 1. 安装必要软件和工具 首先你需要准备以下组件: - **GNU Arm Embedded Toolchain**:这是用于ARM Cortex-M处理器的交叉编译器集合。 - **OpenOCD**:用于调试硬件设备。 - **STMicroelectronics Standard Peripheral Libraries (SPL)** 或 STM32CubeMX生成的基础代码。 #### 步骤详情 ##### (1)安装 GNU Arm 工具链 从 [Arm官方网站](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm) 下载并安装适合您操作系统的版本。例如,在Linux系统上可以运行如下命令安装: ```bash sudo apt-get install gcc-arm-none-eabi ``` ##### (2)下载 ST 标准外设库 访问ST官网下载对应型号芯片(如STM32F1xx)的标准外设库,并解压到本地文件夹路径下保存好备用。 ##### (3)配置 OpenOCD 调试支持 为了能够在 CLion 中直接启动 GDB 和连接目标板进行调试功能测试,请确认已成功设置了 openocd 并能够通过终端正常工作起来。如果尚未安装的话,则可以通过包管理程序获取它;比如对于Ubuntu发行版来说可以用下面这行指令轻松搞定一切依赖项的同时也把openocd给安上去啦~ ```shell sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt update && sudo apt install openocd gdb-multiarch arm-none-eabi-gdb ``` ### 2. 配置CLion工程 打开CLion创建一个新的CMake Project。 ##### (4)修改 CMakeLists.txt 文件内容示例 这里提供一份基本模板供参考调整成适应个人需求的样子即可开始构建属于自己的嵌入式应用程序啦~注意替换实际使用的头文件搜索目录还有链接脚本位置哦! ```cmake cmake_minimum_required(VERSION 3.17) project(stm32_clion_project) set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ARM) # 指定工具链前缀 SET(TOOLCHAIN_PREFIX "arm-none-eabi") # 设置GCC查找二进制文件的位置 如果未加入PATH则需手动指定完整路径 find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}-ar) find_program(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}-ranlib) find_program(CMAKE_NM ${TOOLCHAIN_PREFIX}-nm) find_program(OBJCOPY ${TOOLCHAIN_PREFIX}-objcopy) find_program(SIZE_UTIL ${TOOLCHAIN_PREFIX}-size) add_executable(${PROJECT_NAME} main.c) target_include_directories(${PROJECT_NAME} PUBLIC /path/to/st_std_lib/inc/ ) link_libraries(-T/path/to/linker_script.ld -nostartfiles ) ``` 记得将`/path/to/st_std_lib/inc/`, `/path/to/linker_script.ld` 替换为你真实的路径地址。 ##### (5)添加启动代码与中断向量表 可以从官方提供的 startup.s 组织汇编语言段落作为初始引导部分加载堆栈指针初始化寄存器值等等重要动作完成之后跳转至主函数继续执行下去直到结束为止呢~ --- 以上就是在Clion里边搭建基于Standard Library 的stm32f系列单片机开发流程概述啦。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值