最近项目告一段落,上班比较闲。因为做的物联网项目,趁此机会学习一下硬件开发。 于是购买了正点原子stm32的开发板,看b站正点原子stm32的视频学习。
作为一个软件开发者习惯了mac环境下idea,xcode这些优秀ide, 再去用keil5总觉得不顺手 于是google了一下,看看如何在mac下进行stm32的开发。找到了clion(jetbrains全家桶中的一员),根据教程折腾了一番,发现完全可以进行stm32的开发。目前已经学习了几天-可以说完全脱离了win+keil,决定总结一下,以便以后参考。
1.简要说明
- 适用对象: 熟悉了mac的生态,想在mac上进行stm32开发调试
- 我买的是正点原子的精英版,mcu型号是
stm32f103ze
. 对于不同的mcu,只要是stm32的应该都适用。不同的只是stm32cubemx的配置。
STM32CubeMX是啥? 官方说明
STM32CubeMX is a graphical tool that allows a very easy configuration of STM32 microcontrollers and microprocessors
. 简单来说就是gui工具可以配置mcu,生成一些基础代码简化开发流程。
- 如果你想用
clion
进行stm32开发,此文只适用于mac环境.win按理来说也是一样的,只是某些配置不同 - mac环境-我的mac系统版本是 macOS catalina
2.环境配置
1.CLion
下载CLionwww.jetbrains.com
版本需要在CLion2019.2以上
2.ARM toolchain
- 命令行运行前两行,安装ARM toolchain, 这里使用homebrew
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc
//安装完成测试
arm-none-eabi-gcc -v
3.OpenOCD
brew install open-ocd
4.STM32CubeMX
你可能需要验证邮箱进行下载STM32CubeMX - STMicroelectronicswww.st.com
- 1. 下载解压后直接双击是无法安装的(至少我的是这样)
- 2.参考readme.发现需要通过命令行执行(需要替换成你自己的版本和路径)
sudo java -jar SetupSTM32CubeMX-4.14.0.exe
例: sudo java -jar /Users/t/Downloads/en.stm32cubemx_v5.4.0/SetupSTM32CubeMX-5.4.0.exe
- 3. 弹出安装界面,一步步安装
5. Clion配置
- 1. 打开CLion配置
openOCD
和STM32CubeMX
路径。 Test没有错误就可以
- 2. Toolchain -> debugger -> 选择Bundled GDB (不设置不能正常进入debug模式)
3. 环境安装完成, 新建一个工程(点亮led)
本工程基于正点原子的开发板(精英版 mcu:stm32f103ze),如果你用的别的开发板,有一些设置需要根据原理图进行调整
1. 新建一个工程,选择STM32CubeMX
2. 工程新建好了,发现只有一个led.ioc
文件。点击Open with STM32CubeMX
系统会打开stm32CubeMX
3. MCU更换
系统默认使用STM32F030F4Px
.点击更换mcu型号, 我这边替换成STM32F103ZE
- 替换前
2.替换后
4. SYS配置
Debug 选择
serial Wire
。 (这里如果不配置每次下载程序都要按复位键)
5. RCC配置
点击System Core
->RCC
配置: HSE选择Crystal/Ceramic Resonator
6. clock配置
上方tab栏选择Clock Configuration
将HCLK
改成72MHZ
. (会弹框问你是否选择其他源,确认就ok)
7. GPIO配置
在图中我们可以看到芯片,选择引脚可以进行配置。 我这块开发板LED0
接的是PB5
口,所以在这里进行PB5口的配置。
8. 生成代码
上方tab选择Project Manager
. 1. 设置工程名称 2.Toolchain / IDE
选择SW4STM32
(很重要) 3. 生成代码 这里会询问你是否替换ioc,选择替换
9. 回到工程选择Board Config file
- 选择
st_nucleo_f103rb.cfg
选择copy to Project & Use
- 这个文件可以自己配置一个,供你后续的工程使用
10. 修改Board Config file
我这边使用的是stlink-v2. 所以stlink-v2-1
修改为stlink-v2
。 其他不变,
source [find interface/stlink-v2.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
reset_config srst_only
11. led点亮代码
main.c
中拉低LED对应引脚电平
12. 编译-> 运行
- 通过stlinkv2和单片机连接
- 运行会出现
** OpenOCD init failed **
3.解决方案:按下复位键的同时点击运行,等待控制台输出
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
时松开复位按钮。这个过程比较快,大约按住复位键1秒就可以。屏幕出现
** Programming Finished **
说明已经下载成功。 观察开发板led已经被点亮
4. 第三步只要进行一次,以后运行都不需要按复位键。直接可以下载程序 (前提条件: stm32cubemx ->sys -> debug 选择了 serial wire. 不然每次下载好像都需要复位)
4.下面放上github链接
https://github.com/wlixcc/stm32f103zegithub.com5. 参考连接
- https://www.jetbrains.com/help/clion/2019.3/embedded-development.html?utm_campaign=CL&utm_content=2019.2&utm_medium=link&utm_source=product
- CLion for Embedded Development, Part III
- 用clion自带的嵌入式开发功能和stm32cubeMX开发stm32!!!