Lazy loaded image
🌉开发框架搭建
开发框架02-开发环境搭建
Words 1899Read Time 5 min
2024-9-27
2024-11-12
type
date
slug
category
icon
password
 

参考资料

  1. 配置CLion用于STM32开发【优雅の嵌入式开发】 - 知乎 (zhihu.com)
  1. Clion STM32 Ubuntu搭建教程 - 哔哩哔哩 (bilibili.com)
 
基于Clion、CubeMX、HAL库、Cmake搭建开发环境。

一、环境搭建

  1. 下载 clion 并安装(有试用计划)
  1. 下载 stm32cubemx 并安装
  1. 下载 MinGW 并安装
    1. Windows: 安装Msys2,参照 MSYS2,安装后,将bin文件夹添加进入环境变量,打开终端,验证 gcc -v
    2. Ubuntu 无需安装。
  1. 安装 arm 交叉编译器
    1. Ubuntu 安装
    2. b. Windows安装
      Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer下载安装包,解压后,路径添加到环境变量。打开终端,使用arm-none-eabi-gcc -v验证安装成功与否。
  1. 安装stlink驱动
  1. 安装openocd
    1. Ubuntu 安装
    2. b. Windows 安装
      Releases · xpack-dev-tools/openocd-xpack (github.com)下载Windos下解压,解压路径记录下,后面配置用到
  1. 安装cmake指定版本
    1. Ubuntu 安装
      1. Windows安装:下载安装包,添加环境变量
    1. 添加工具链, File|Settings|Build,Execution,Deployment|Toolchains
      1. notion image
        • Build Tools:添加msys64路径下mingw32-make.exe。
        • C/C++ Compiler:添加arm 交叉编译器路径下编译器。

    二、新建项目

    步骤1:CLion创建CubeMX项目

    打开CLion,点击 New | Project | STM32CubeMX创建项目。项目默认基于STM32F030(后面可更改)。
    notion image
    自动创建结束,会跳出板载配置选择(这里是OpenOCD调试配置所需,我们先选择Skip)。
    notion image

    步骤2:排查实时保护

    IDE检测到Microsoft Defender启用了实时保护功能,这可能会严重降低IDE的性能。
    点击Atuomatically,将以下路径添加到Defender的文件夹排除列表中。
    notion image

    步骤3:使用 STM32CubeMX 打开 “.loc”后缀文件,开始配置项目;

    notion image

    步骤4:STM32CubeMX配置事项

    STM32CubeMX详细使用教程不在此赘述,只提几点注意事项:
    notion image
    • 注意1:CubeMX 项目名称一定要和在Clion中建立名称一致,演示中使用test;
    • 注意2:项目Location位置为根文件上一层级,见上图文字;
    • 注意3:CubeMX 导出为 CubeMX IDE 类型,勾选Generate Under Root;
    • 注意4:点击生成代码,选择覆盖刚刚默认配置的STM32F030项目,可以返回CLion中查看新生成项目;
      • notion image
        notion image
    • 注意5:若CubeMX 更新,CMakeLists.txt 会被更新。修改的内容也会被覆盖,可以修改 CMakeLists_template.txt模板文件,这样对于CMakeLists.txt 的修改就会保存下来。
    • 注意6:修改CMakefiles,新添头文件搜索文件夹和源文件方法

      步骤5:程序编译

      编译遇到如下错误:
      因为寄存器操作指令使用了硬件浮点操作,而在CMakeLists.txt 中使用软浮点,可以通过反注释以下编译选项解决。
      移动main.c main.h进入UserApp

      步骤6:烧录程序 & 在线调试(Board Config File)

      在Keil里面我们烧录程序的时候要指定使用的下载器(J-Link、ST-Link、CMSIS-DAP等),CLion烧录程序之前也需要对下载器进行一些设置。
      点击编译按钮旁边的配置栏下拉,选Edit Configurations,打开配置窗口
      notion image
      1. 工程根目录下新建一个文件夹Tools,在里面新建一个配置文件daplink.cfg (DapLink作为仿真器)
        1. notion image
      1. ST-Link作为仿真器
        如果对自己的芯片不知道怎么设置,可以参考OpenOCD自带的一系列配置文件,路径在OpenOCD安装目录的share\openocd\scripts下。只需要关注这几个目录:
        • board:板卡配置,各种官方板卡
        • interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
        • target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
        设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。

        步骤7:调试查看外设寄存器

         

        三、printf重定向问题

        1. keil 编译器,printf函数我们需要重定向fputc函数
          1. Clion中,由于使用 gcc-arm-none-eabi编译器,可以在usart.c 重定向__io_putchar__io_getchar函数。也可以直接重写Core/Src/syscalls.c文件 int _write(int fd, char *ptr, int len)int _read(int file, char *ptr, int len)方法。
            1. usart.c
            2. b. retarget.c 参考这里,里面重写了_write_read 函数
              • printf()和scanf()都是用轮询方式,没有使用中断。调用scanf()在串口助手中输入数据时,必须以空格结束,然后点击发送,否则无法完成发送(mcu会认为串口一直没有收到数据),一直处于判断串口Flag的状态(__HAL_UART_GET_FLAG()),陷入UART_WaitOnFlagUntilTimeout() 函数下的while循环当中出不来。
              • 调用setvbuf(stdout, NULL, _IONBF, 0),设置buffer缓存为0,这样一有数据就发送,不然会等到缓存满或有回车换行符才发送。

          四、添加版本控制

           

          添加gitignore工具

          初始化仓库

          方法1:安装git工具,进入根目录,git init 初始化该目录。
          方法2:使用CLion IDE 初始化
          notion image
          开发常用版本控制功能参考
          开发框架06-集成GIT版本控制系统
           
          上一篇
          开发框架01-定义、概念、必要性和特点
          下一篇
          开发框架03-遵守编程规范

          Comments
          Loading...