2. 开发环境搭建:Keil MDK安装与配置、STM32CubeMX初始化工程、串口驱动安装与调试

好,咱们正式开始动手了。这一章,说白了就是「磨刀」。刀磨快了,后面砍柴才不费劲。我见过不少新手,上来就急着写代码,结果环境没配好,编译报错半天找不到原因,白白浪费一整天。嗯,咱们别走那个弯路。

2.1 Keil MDK 安装与配置

Keil MDK,这是咱们嵌入式开发最常用的IDE之一。我个人习惯用MDK 5.38版本,稳定,兼容性好。你问为什么不用最新的?我在项目中遇到过,新版本对某些老芯片支持反而不好,折腾半天不如用个稳妥的。

安装步骤

  1. 下载安装包:去Keil官网下载MDK-ARM。注意选对版本,别下成C51了,那是给51单片机用的。
  2. 运行安装程序:一路Next就行。但有个坑——安装路径不要有中文。我曾经帮一个同事排查问题,搞了俩小时,最后发现是路径里有个「项目」两个字,编译器直接罢工了。
  3. 激活License:安装完会弹出一个License Management窗口。把你的许可证码填进去,点Add LIC。如果提示错误,八成是杀毒软件拦截了,关掉再试。
  4. 安装芯片包:打开Keil,点击菜单栏的 Pack Installer。找到你的芯片型号,比如STM32F103C8,点Install。这一步很多人会忘,结果新建工程时找不到芯片,急得团团转。
小技巧:Pack Installer下载慢的话,可以手动去Keil官网下载对应的.pack文件,然后双击安装。速度能快不少。

配置要点

安装完别急着关,咱们做几个关键配置:

  • 编译器版本:在 Project -> Manage -> Project Components 里,把编译器选成 V6。V6编译速度快,生成的代码也更小。我刚开始用V5,后来换了V6,编译时间从40秒降到了15秒,爽多了。
  • 输出路径:建议把输出文件放到单独的文件夹,比如 Output。不然工程目录下全是.hex、.map文件,乱得很。
  • 调试器设置:如果你用ST-Link,在 Debug 选项卡里选 ST-Link Debugger,然后点 Settings,把 SWD 勾上。别选JTAG,占用的引脚多,没必要。
注意:如果你用的是盗版License,Keil会在编译时随机插入延迟代码。我见过一个项目,明明代码没问题,但运行起来偶尔卡顿,查了三天才发现是License的问题。所以,能正版就正版,或者用社区版。

2.2 STM32CubeMX 初始化工程

STM32CubeMX,这是ST官方出的图形化配置工具。说白了,就是帮你自动生成初始化代码。你想想看,以前配置一个定时器,要翻几百页的参考手册,现在点几下鼠标就搞定了,多省事。

创建工程

  1. 选择芯片:打开CubeMX,点 New Project。在 Part Number 里输入你的芯片型号,比如STM32F103C8。双击选中。
  2. 配置时钟:进入 Clock Configuration 页面。我建议先把 HSELSE 都打开,然后让软件自动计算时钟树。点一下 HCLK 输入框,输入72,回车,系统会自动调整分频系数。如果提示红色错误,说明时钟配置不合理,调整一下PLL参数就行。
  3. 配置外设:在 Pinout & Configuration 页面,找到你要用的外设。比如串口,点 USART1,Mode选 Asynchronous。下面会自动分配TX和RX引脚。嗯,这里要注意,有些芯片的引脚是复用的,别跟其他外设冲突了。
  4. 生成代码:点 Project Manager,填好工程名和路径。Toolchain选 MDK-ARM V5。然后点右上角的 GENERATE CODE。搞定。
核心要点:CubeMX生成的代码只是初始化框架,业务逻辑还得自己写。别指望它帮你把整个项目都做了,那不现实。

个人经验

我在项目中遇到过一个问题:用CubeMX生成的代码,下载到板子上跑不起来。查了半天,发现是CubeMX版本太旧,生成的HAL库跟Keil里的不匹配。解决办法很简单:保持CubeMX和Keil的HAL库版本一致。建议都用最新版,或者都用某个稳定版。

2.3 串口驱动安装与调试

串口,这是嵌入式开发中最常用的调试手段。说白了,就是往电脑上打印信息,看看程序跑到哪了、变量值是多少。没有串口,调试就像闭着眼睛走路,全靠猜。

驱动安装

市面上常见的USB转串口芯片有CH340、CP2102、FT232等。不同芯片的驱动不一样:

芯片型号 驱动名称 常见问题
CH340 CH340SER.EXE Win10以上系统需禁用驱动签名
CP2102 CP210x Universal Windows Driver 安装后需重启电脑
FT232 FTDI VCP Driver 注意区分2.0和3.0版本

安装步骤很简单:下载对应驱动,双击安装,插上USB转串口模块,看设备管理器里有没有出现新的COM口。如果出现黄色感叹号,说明驱动没装好。我曾经遇到过,CH340在Win10上死活装不上,最后发现是系统开启了「驱动程序强制签名」,关掉就好了。

调试技巧

驱动装好了,怎么用?我推荐两个工具:

  • 串口调试助手:比如SSCOM、Putty。设置好波特率(一般115200)、数据位(8)、停止位(1)、校验位(None),打开串口,就能看到板子发来的数据了。
  • 逻辑分析仪:如果串口数据不对,比如乱码、丢数据,用逻辑分析仪抓一下波形。看看波特率对不对,电平是否正常。我有个项目,串口一直乱码,查了三天,最后用逻辑分析仪发现是板子上的晶振频率不对,导致波特率偏差太大。
调试口诀:先看驱动,再看接线,最后看代码。顺序别搞反了,不然容易白忙活。

代码示例

用HAL库发送一串数据,代码很简单:

#include "main.h"
#include "usart.h"

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_USART1_UART_Init();

    uint8_t msg[] = "Hello, 电梯召唤面板!\r\n";
    
    while (1)
    {
        HAL_UART_Transmit(&huart1, msg, sizeof(msg), 1000);
        HAL_Delay(1000);
    }
}

这段代码,说白了就是每隔1秒发一次「Hello, 电梯召唤面板!」。你把它下载到板子上,打开串口助手,就能看到数据了。如果看不到,别慌,按上面的调试口诀一步步排查。

避坑指南:我曾经遇到过,串口能发数据,但收不到数据。查了半天,发现是TX和RX接反了。记住:板子的TX接模块的RX,板子的RX接模块的TX。交叉连接,别搞成直连了。

好了,环境搭好了,串口也能用了。下一章咱们就开始写真正的电梯召唤面板代码了。嗯,到时候你会感谢现在认真搭环境的自己。