stm32 AI模型部署之路(一)终于在MacBook m3上配置好了stm32的开发环境
Published:
使用一个最基础的LED闪灯的程序来测试的。使用的IDE是stm32CubeIDE,使用它主要还是考虑能够在macOS上运行,而且比keil等软件,人机界面做的好很多。使用的开发板是nucleo-h753ZI,开发板内置了ST-Link V3,所以不需要额外买st-link模块,直接使用micro usb-b(老安卓接口,注意是数据线,不是充电线,一开始就踩了这个坑,用充电线没法和STLink建立通信)连接即可下载程序。
STM32H7 Nucleo-144开发板具有以下特性: • 采用LQFP144封装、基于Arm®(a)Cortex®内核的STM32H7微控制器 • 符合IEEE-802.3-2002标准的以太网(取决于STM32H7的支持情况) • USB OTG全速接口 • 3个用户LED灯 • 2个按键:用户按键(USER)和复位按键(RESET) • 低速外部(LSE)晶体: – 32.768 kHz晶体振荡器 • 开发板连接器: – 带Micro-AB接口的USB – 以太网RJ45接口 – MIPI-10接口 – 包含ARDUINO® Uno V3扩展连接器的ST Zio接口 – ST Morpho扩展连接器 • 灵活的电源供应选项:ST-LINK USB VBUS或外部电源 • 板载带SWD连接器的STLINK-V3E调试器/编程器: – USB重新枚举功能:虚拟串口、大容量存储、调试端口 – STLINK-V3E独立套件功能 • STM32Cube软件包提供全面的免费软件库和示例代码 • 支持多种集成开发环境(IDE),包括IAR Embedded Workbench®、MDK-ARM和STM32CubeIDE
一、stm32CubeIDE在macOS的配置
- 在macOS上使用和windows一样简单,直接在官网下载安装包即可,和windows一样,一步步安装就行。官网地址:https://www.st.com/en/development-tools/stm32cubeide.html。
- 安装java。同样是访问java官网,选择macOS版本的java安装即可。两个软件都是傻瓜式安装。
- 安装 install_sw4stm32_macos_64bits-latest.run(https://www.ac6-tools.com/downloads/SW4STM32/)
- 安装st-link server,访问官网下载即可。https://www.st.com/en/development-tools/st-link-server.html
如上步骤安装好后,就可以在macOS上正常使用stm32cubeIDE了。然后直接使用micro usb-b(老安卓数据线,注意不是充电线,不然识别不到板子内置的st-link)直接连接板子上的接口即可。下载程序的时候,stm32cubeIDE会自动更新st-link驱动版本到v3,因为nucleo-h753ZI版本内置的是st link v3版本。
二、nucleo-h753ZI/nucleo-h743ZI板子扫盲(两个板子基本是一样的)
下面介绍的都是板子最重要的内容,其他诸如网口、各引脚具体功能等可从数据手册查看。手册地址:https://www.st.com/resource/en/user_manual/um2407-stm32h7-nucleo144-boards-mb1364-stmicroelectronics.pdf
从文章开头的板子截图中可以清楚的看到板子上各个模块。
1. 内置的STLINK-V3E
对板载的STM32H7微控制器进行编程或调试有两种不同的方式: • 使用内置的STLINK-V3E • 使用连接到MIPI-10连接器(CN5)的外部调试工具。
STLINK-V3E编程和调试工具集成在STM32H7 Nucleo-144开发板中。
对于STM32H7设备,嵌入式STLINK-V3E仅支持串行线调试(SWD)和虚拟串口通信(VCP)。有关调试和编程功能的信息,请参考技术说明《ST-LINK衍生产品概述》(TN1235),该文档详细描述了所有STLINK/V3的功能。
STLINK-V3E支持的功能: • 由USB连接器(CN1)提供5V电源 • USB 2.0高速兼容接口 • JTAG/串行线调试(SWD)特定功能: – JTAG/SWD接口上的应用电压为3.0至3.6V,且输入具有5V耐压能力 – JTAG功能 – SWD和串行查看器(SWV)通信 • 兼容STDC14(MIPI-10)的连接器(CN5) • 状态通信(COM)LED灯(LD4),在与电脑通信期间会闪烁 • 故障红色LED灯(LD6),在USB出现过流请求时发出警报 • 具有限流功能和LED指示灯的5V/300mA输出供电能力(U2) • 绿色LED灯亮:表示5V已启用(LD5)
2. 不同供电方式
下面这张图描述了不同供电方式选择的跳帽。默认情况下可以直接选择使用STLink供电,可以供给5V 500mA的电源。
- 有五种不同的电源来源可以为其供电: • 通过USB线连接到CN1的主机电脑(默认设置,电流500mA max) • 连接到CN8引脚15或CN11引脚24的外部7至12伏电源 • 连接到CN11引脚6的外部5伏电源 • 连接到CN1的外部5伏USB充电器(5V_USB_CHGR) • 连接到CN8引脚7或CN11引脚16的外部3.3伏电源(3V3)
可以是通过USB线连接的主机电脑,也可以是外部电源,如VIN(7至12伏)、E5V(5伏),或者是CN8或CN11上的+3.3伏电源引脚来提供电力。如果使用VIN、E5V或+3.3伏为Nucleo-144开发板供电,该电源必须符合EN-60950-1: 2006+A11/2009标准,并且必须是具有有限功率能力的安全特低电压(SELV)。
如果电源是+3.3伏,STLINK-V3E将不会被供电,且无法使用。
默认的ST Link供电
来自STLINK-V3E USB连接器的电源输入(默认设置)
STLINK-V3E USB连接器(CN1)上的5V信号可为STM32H7 Nucleo-144开发板及其扩展板供电。使用STLINK跳线的JP2 [1-2]配置。
如果USB枚举成功,通过使能来自STM32F723IEK6 “STLINK-V3E”(U7)的PWR_ENn信号,5V_ST_LINK电源将被启用。该引脚连接到一个电源开关(U2),由它为开发板供电。电源开关(U2)还具有限流功能,以便在板载出现短路情况时保护电脑。如果板载发生过流(超过500毫安),红色LED灯(LD6)将点亮。
STLINK-V3E USB连接器(CN1)可为带扩展板的Nucleo开发板供电。然而,STLINK-V3E电路在USB枚举之前就已通电,因为此时主机电脑仅向开发板提供100毫安的电流。
在USB枚举期间,Nucleo开发板会向主机电脑请求500毫安的电源。 • 如果主机能够提供所需的电源,枚举将以设置配置命令结束。然后,电源开关和绿色LED灯(LD5)将开启。这样,Nucleo开发板及其扩展板可以消耗500毫安的电流,但不能超过这个值。 • 如果主机无法提供请求的电流,枚举将失败。因此,电源开关(U2)将保持关闭状态,包括扩展板在内的微控制器部分将不会通电。结果,绿色LED灯(LD5)将保持熄灭状态。在这种情况下,必须使用外部电源。
外部7-12V供电,电流800mA
来自VIN(7至12伏,最大800毫安)的外部电源输入
当STM32H7 Nucleo-144开发板由VIN供电时,跳线(JP2)的配置必须设置为[3-4] VIN。
根据所使用的电压,Nucleo-144开发板及其扩展板可以通过三种不同的方式由外部电源供电。
其他几种供电方式性价比不高,不在此介绍,可以看开发板手册
手册地址:https://www.st.com/resource/en/user_manual/um2407-stm32h7-nucleo144-boards-mb1364-stmicroelectronics.pdf
3. 板子时钟
- 高速外部时钟(HSE),板子默认不搭载
有四种方式来配置与外部高速时钟(HSE)相对应的引脚: • 来自STLINK-V3E的MCO(默认设置):ST-LINK的MCO输出用作输入时钟。该频率无法更改,固定为8兆赫兹,并连接到STM32H7系列微控制器的PF0/PH0-OSC_IN引脚。配置必须为: - SB44和SB46断开 - SB45接通 - SB3和SB4断开 • 来自X3晶体的板载HSE振荡器(未提供):关于其典型频率、电容和电阻,请参考STM32H7系列微控制器数据手册以及应用笔记《STM8AF/AL/S和STM32微控制器的振荡器设计指南》(AN2867)中的振荡器设计指南。X3晶体具有以下特性:25兆赫兹、6皮法、20百万分率。配置必须为: - SB44和SB46断开 - SB3和SB4接通 - C69和C70接通,并使用5.6皮法的电容 - SB45断开 • 来自外部PF0/PH0的振荡器:通过CN11连接器的第29引脚连接外部振荡器。配置必须为: - SB46接通 - SB45断开 - SB3和SB4断开 • 不使用HSE:PF0/PH0和PF1/PH1用作通用输入输出引脚(GPIO),而不是时钟引脚。配置必须为: - SB44和SB46接通 - SB45断开 - SB3和SB4断开
- 低速外部时钟(LSE) - 32.768千赫兹,板子默认使用的这个 有三种方式来配置与低速时钟(LSE)相对应的引脚: • 板载振荡器(默认设置):X2晶体。关于STM32H7系列微控制器的振荡器设计指南,请参考应用笔记《STM8AF/AL/S和STM32微控制器的振荡器设计指南》(AN2867)。配置必须为:
- SB40和SB41断开
- R38和R39接通 • 来自外部PC14的振荡器:通过CN11连接器的第25引脚连接外部振荡器。配置必须为:
- SB40和SB41接通
- R38和R39断开 • 不使用LSE:PC14和PC15用作通用输入输出引脚(GPIO),而不是低速时钟引脚。配置必须为:
- SB40和SB41接通
- R38和R39断开
4. 板子一些内置的LED灯
用户指示灯LD1:一个绿色的用户指示灯连接到STM32H7的I/O引脚PB0(SB39接通且SB47断开)或PA5(SB47接通且SB39断开),对应于ST Zio的D13引脚。
用户指示灯LD2:一个黄色的用户指示灯连接到PE1引脚。
用户指示灯LD3:一个红色的用户指示灯连接到PB14引脚。
当I/O引脚为高电平时,这些用户指示灯点亮;当I/O引脚为低电平时,这些用户指示灯熄灭。
通信指示灯LD4:三色(绿色、橙色和红色)指示灯(LD4)提供有关ST-LINK通信状态的信息。LD4的默认颜色为红色。当PC与STLINK-V3E之间正在进行通信时,LD4会变为绿色,具体状态如下: • 在USB初始化前,上电时红色指示灯缓慢闪烁/熄灭 • 在PC与STLINK-V3E之间首次正确通信(枚举)后,红色指示灯快速闪烁/熄灭 • 当PC与STLINK-V3E之间的初始化完成时,红色指示灯常亮 • 当目标通信初始化成功后,绿色指示灯常亮 • 在与目标进行通信时,红色/绿色指示灯交替闪烁 • 绿色指示灯常亮表示通信完成且成功 • 橙色指示灯常亮表示通信失败
电源指示灯LD5:绿色指示灯(LD5)表示STM32H7部分已通电。在CN8的引脚9和CN11的引脚18上有+5V电源。
USB电源故障指示灯LD6:红色指示灯(LD6)表示开发板通过USB的功耗超过了500毫安,因此,用户必须使用外部电源为开发板供电。
USB全速指示灯LD7和LD8:请参考USB OTG_FS相关内容。
三、LED灯闪烁代码测试和烧录到板子测试
stm32cubeIDE的基本使用方式就不扫盲了,就直接新建项目就可以了。
我们从上面的介绍可以知道,LED2是PE1引脚,所以我们在IDE中把PE1引脚找到,并且设置为GPIO_Ouput功能,然后按照如下图所示设置引脚。
然后设置RCC时钟。对于nucleo板子来说,没有外置的8MHz高速时钟,只有低速时钟。
然后来配置各模块的时钟。有一说一,我也不知道咋配置,就用的默认的。
UI界面上都配置完成后,就可以点击这个按钮生成代码了。
我们主要实现LED2 闪灯的测试,我们代码修改就这一个地方。注意代码要写在IDE提示的代码BEGIN和END之间,不然更新UI的配置,用户代码会被覆盖掉。
然后点击编译和运行按钮,将代码下载到板子中。初次点击运行时,IDE会提示升级STLINK到V3,与内置的V3的STLINK芯片对应。