"反馈具有用过去行为来调节未来行为的功能。"

前言

  大二下开了嵌入式的课,只能说keil的MDK和它的C51一个吊样,作为一款不止UI属于上世纪的IDE,我完全不想再去使用。之前尝试过使用vscode上的PlatformIO来进行开发,但拿它来写arduino平台的还行,如果是STM32会有很多寄存器和兼容上的问题。之前有用过Jetbrains的IDEA写Java,对Jetbrains系的功能强大和自动化印象深刻。发现了可以使用它旗下的CLion+ST的STM32CubeMX来搭建STM32开发环境,CubeMX可以配合ST的HAL库快速地搭建工程,相比较于过去的标准库,HAL库使用抽象方法进一步简化了寄存器和功能的使用,而且对移植更加友好。

准备

1.STM32CubeMX

  直接去ST的官网上下就完事了。

2.OpenOCD

  OpenOCD是一款开源的调试软件,支持多种调试器协议和嵌入式核心,功能强大,令人畏惧。

3.arm-none-eabi-gcc

  arm核心的编译器,或者可以被叫做工具链。也是直接去官网下载就完事了。
  下完之后将其添加进环境变量
pic1
  重启后进入cmd输入arm-none-eabi-gcc -v 有信息输出代表配置成功。

4.MinGW

  用CLion自带的就行了。

配置CLion

  • 1.打开CLion后创建嵌入式项目
    pic2
  • 2.进入设置-嵌入式开发,设置OCD和CubeMX的位置
    pic3
  • 3.在工具链中将C与C++的编译器改为arm-none-eabi-gcc中的编译器,工具集和CMake可以使用CLion自带的。
    pic4

    配置工程项目

  • 创建嵌入式项目后进入CLion后点击通过STM32CubeMX打开进入CubeMX
    pic5
  • CLion默认的芯片是F030,点击改变芯片为你使用的型号。
    pic6
  • 双击进入工程配置
    pic7
  • 点击Project Manager将项目的名字改为CLion中所创建的项目,路径也改为CLion中项目的路径来覆盖默认生成的项目文件。将IDE改为SW4STM32,最后点击GENERATE CODE生成Demo。
    pic8
  • 覆盖原项目后再进入CLion会跳出板卡选择框,按需要选择对应板卡,或者可以自己建立板卡的配置文件。
    pic9

    编译,调试与下载固件

    配置openocd烧写文件

      openocd提供了很多的官方开发板烧写配置文件,在一般情况下完全可以套用,但你也可以自己写。
      以stm32f103rc为例,在项目文件夹根目录下新建.config文件
    1
    2
    3
    4
    5
    6
    7
    source [find interface/stlink.cfg] ##指定调试器接口类型为stlink

    transport select hla_swd ##调试器接口选择swd模式

    source [find target/stm32f1x.cfg] ##选择芯片类型

    reset_config none ##取消reset
    pic10
    点击调试配置在面板配置文件下选择自己写的.cfg文件。
    pic11
    之后就能使用烧写和调试功能了。

CLion和MDK一样也支持单步调试和变量与寄存器赋值,虽然调试功能没有MDK强大但我觉得也已经够用了。

结尾

  在准备四月九号蓝桥杯的时候忙里偷闲把之前没写完的配置部分写完了。我测试的时候使用的是H750,用了学校嵌入式实验时候发的stlink。只能说学校发的这玩意让人一言难尽,我插拔和重新接线了好几次才能被openocd识别到,烧写的时候还总是断开连接MDK里到现在还是“No target connect”我蒙古。让人不禁怀疑实验室把经费都砸到哪里去了指去年买了20块Xilinx和英伟达Kit到仓库里吃灰。一气之下我还是去淘宝花30买了个CMSIS DAP。
  展示一下用这一套IDE烧的JPEG解码器。
pic12