2、开发环境搭建:STM32CubeIDE安装与配置、ARM CMSIS库介绍、串口调试工具准备
好,咱们正式开始动手了。
这一章,说白了就是“把家伙事儿备齐”。你想想看,一个木匠干活前得先磨斧子,咱们搞嵌入式AI部署,也得先把开发环境收拾利索。我见过太多新手,代码写得挺溜,结果卡在环境配置上,一卡就是半天,特别影响心情。
咱们的目标很明确:装好IDE、配好库、准备好调试工具。这三样齐了,后面咱们才能专心搞神经网络。
2.1 STM32CubeIDE:咱们的主战场
我个人习惯用STM32CubeIDE。为什么选它?因为它免费、官方、而且集成了CubeMX图形化配置工具。你不需要在多个软件之间切来切去,一个IDE全搞定。
安装步骤其实很简单:
- 去ST官网下载最新版STM32CubeIDE。注意选对操作系统版本。
- 双击安装,一路默认就行。但有个坑——安装路径不要有中文。我曾经帮一个学员远程调试,折腾半天发现是他路径里带了个“项目”两个字,编译器直接罢工了。
- 安装完成后,第一次启动会提示你选择工作空间(Workspace)。我建议单独建一个文件夹,比如
D:\STM32_Workspace,别放C盘,免得系统盘满了哭都来不及。
装好之后,咱们验证一下。新建一个工程,选你的芯片型号——咱们课程用的是STM32F407系列,当然你用F4系列其他型号也行,差别不大。能正常编译通过,就说明环境OK了。
2.2 ARM CMSIS库:别重复造轮子
ARM CMSIS库,全称是Cortex Microcontroller Software Interface Standard。名字挺长,但说白了就是ARM官方给你写好的一套底层驱动和中间件。
为什么咱们要用它?
- 统一接口:不管你是ST、NXP还是GD的芯片,CMSIS的API写法基本一样。你学会了,换芯片也能快速上手。
- 性能优化:CMSIS-DSP库里有大量用汇编优化的数学函数,比如矩阵运算、FFT。咱们做神经网络,卷积运算本质上就是矩阵运算,直接用CMSIS-DSP能快不少。
- 神经网络专用包:CMSIS-NN,这是专门为Cortex-M系列优化的神经网络推理库。后面咱们部署模型,主要就靠它。
在STM32CubeIDE里怎么用?很简单。新建工程时,在“Software Packs”里勾选上CMSIS就行。或者你手动把CMSIS的源码文件夹拖到工程里,也可以。
嗯,这里要注意一点。CMSIS库的版本很重要。我建议用最新的稳定版,因为ST官方会不断修复bug和优化性能。你可以在STM32CubeIDE的“Help”菜单里检查更新。
2.3 串口调试工具:你的第二双眼睛
做嵌入式开发,没有串口调试,就像开车没有仪表盘。你根本不知道程序跑到哪了,数据对不对。
常用的串口工具有这些:
| 工具名称 | 特点 | 推荐指数 |
|---|---|---|
| SecureCRT | 功能强大,支持脚本,但收费 | ⭐⭐⭐⭐ |
| Putty | 免费轻量,够用 | ⭐⭐⭐ |
| MobaXterm | 免费版功能就很全,还带SFTP | ⭐⭐⭐⭐⭐ |
| 串口助手(各种国产) | 简单易用,适合快速调试 | ⭐⭐⭐ |
我个人推荐MobaXterm。为什么?因为它不仅能当串口终端,还能当SSH客户端、FTP客户端。你后面做项目,经常需要从电脑传文件到开发板,一个工具全搞定,省心。
配置串口时,这几个参数要记住:
- 波特率:咱们统一用115200。别问我为什么,这是嵌入式界的“普通话”。
- 数据位:8位
- 停止位:1位
- 校验位:无
- 流控制:无
🔧 实战小技巧: 在STM32代码里,初始化串口时记得加上这样一段:
// 重定向printf到串口
int fputc(int ch, FILE *f) {
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
加上这段之后,你就可以直接用 printf() 打印调试信息了。我刚开始做项目时,傻傻地用 HAL_UART_Transmit() 一个一个字节发,后来发现这个技巧,效率直接翻倍。
好了,环境搭好了,工具也备齐了。下一章咱们就开始写第一个程序——点亮LED,顺便验证一下咱们的串口好不好使。别小看这一步,硬件调试就是从点灯开始的。