前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mac下搭建stm32开发环境

mac下搭建stm32开发环境

作者头像
Mculover666
发布2021-07-23 15:19:37
2.6K0
发布2021-07-23 15:19:37
举报
文章被收录于专栏:TencentOS-tinyTencentOS-tiny

一、STM32CubeMX

1. java环境

直接使用brew安装openjdk 8:

代码语言:javascript
复制
brew install openjdk@8

配置jdk环境:

代码语言:javascript
复制
sudo ln -sfn /usr/local/opt/openjdk@8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-8.jdk
/usr/libexec/java_home

配置完成后检查java环境:

代码语言:javascript
复制
java -version

2. 安装stm32cubemx

官方下载:https://www.st.com/en/development-tools/stm32cubemx.html

下载之后解压,双击进行安装,若出现“mac无法验证开发者”,解决方案(注意文件路径):

代码语言:javascript
复制
sudo xattr -cr ~/develop/mcu/SetupSTM32CubeMX-6.2.1.app

执行之后再次运行,可以正常安装:

一路next,安装完成,在菜单栏即可看到stm32cubemx图标,点击运行,然后添加到扩展坞。

此时就可以将之前解压出的zip安装包删除啦。

生成一个 led 的工程,参考教程:

STM32CubeMX | 03-使用GPIO点亮一个LED

最后选择生成makefile工程即可:

二、VSCode

直接在官网下载安装。

VSCode是以文件夹作为工作区的,首先将VSCode的命令注册环境变量中,然后在stm32cubemx生成的工程目录中使用命令即可在vscode中打开:

代码语言:javascript
复制
code .

三、安装编译工具链

1. 编译工具链

编译工具使用 arm-none-eabi-gcc 工具链。

在官方下载:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

下载之后解压,将解压后的文件夹挪到一个自己喜欢的位置,重命名为gcc-arm-none-eabi

其中的bin目录下存放的是各种编译工具,将其添加到用户环境变量中:

代码语言:javascript
复制
vim ~/.zshrc

在其最后添加环境变量:

代码语言:javascript
复制
export PATH=/Users/mculover666/develop/toolchains/gcc-arm-none-eabi/bin:$PATH

关掉所有终端,重新打开,输入arm,双击tab,根据是否可以自动补全可判断是否添加成功:

2. 构建工具

构建工具使用make,我默认的环境中已经有make工具,无需再安装:

如果没有,可以安装gcc,make工具包含在gcc工具链中。

3. 编译测试

有了arm-none-eabi-gcc和make工具链后,就可以尝试编译刚刚使用stm32cubemx生成的makefile工程了。

进入cubemx生成工程的根目录:

代码语言:javascript
复制
cd /Users/mculover666/develop/mcu/stm32l431rc-bearpi/project/ledblink

直接编译:

代码语言:javascript
复制
make

哦豁,mac又无法验证app,只好再对整个工具链目录给一下权限:

代码语言:javascript
复制
cd /Users/mculover666/develop/toolchains
sudo xattr -cr ./gcc-arm-none-eabi/*

好啦,再回来编译一下,编译成功:

四、下载工具

1. 安装openocd

下载工具使用openocd。

直接使用brew安装:

代码语言:javascript
复制
brew install openocd

安装完毕后检查openocd版本:

2. openocd使用方法

openoc安装位置在 /usr/local/share/openocd 下,进入openocd安装目录下的script文件夹查看:

其中interface文件夹下存放的是openocd支持的下载器:

target下存放着目标芯片的配置文件:

连接目标芯片:

代码语言:javascript
复制
openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/local/share/openocd/scripts/target/stm32l4x.cfg

安装telnet:

代码语言:javascript
复制
brew install telnet

使用telnet连接:

代码语言:javascript
复制
telnet localhost 4444

复位:

代码语言:javascript
复制
reset

停机

代码语言:javascript
复制
halt

下载:

代码语言:javascript
复制
flash write_image erase /Users/mculover666/develop/mcu/stm32l431rc-bearpi/project/ledblink/build/ledblink.bin 0x08000000

3. 一行命令搞定下载

以上这些繁琐的过程,可以永恒一行命令搞定,将其添加到stm32cubemx生成的makefile中,非常方便:

代码语言:javascript
复制
download:
 openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/local/share/openocd/scripts/target/stm32l4x.cfg -c init -c reset -c halt -c "flash write_image erase $(shell pwd)/$(BUILD_DIR)/$(TARGET).bin 0x08000000" -c reset -c shutdown 

接着使用命令完成下载:

代码语言:javascript
复制
make download

五、串口终端

1. 安装minicom

串口终端使用minicom,通过brew安装:

代码语言:javascript
复制
brew install minicom

2. 配置minicom

首先使用命令查看挂载到mac上的串口设备:

代码语言:javascript
复制
ls /dev/tty.usbmodem*

接着对minicom进行配置:

代码语言:javascript
复制
sudo minicom -s

选择串口设置:

配置串口设备名称和基本参数(按配置项前的字母,按下哪个设置哪个):

配置完成后点击回车,选择保存为默认,退出。

3. 使用minicom

进入minicom的命令为:

代码语言:javascript
复制
sudo minicom

minicom的功能很强大,如有兴趣可以自行探索~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mculover666 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、STM32CubeMX
    • 1. java环境
      • 2. 安装stm32cubemx
      • 二、VSCode
      • 三、安装编译工具链
        • 1. 编译工具链
          • 2. 构建工具
            • 3. 编译测试
            • 四、下载工具
              • 1. 安装openocd
                • 2. openocd使用方法
                  • 3. 一行命令搞定下载
                  • 五、串口终端
                    • 1. 安装minicom
                      • 2. 配置minicom
                        • 3. 使用minicom
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档