3. 开发环境搭建:Keil MDK与STM32CubeIDE安装、STM32CubeMX配置工程、串口驱动安装与调试、逻辑分析仪基础使用

好,咱们正式开始动手了。这一章我带你把吃饭的家伙事儿都装好、调通。说白了,搞单片机电力数据采集,开发环境就是你的工作台。台子搭不稳,后面写再多代码也是白搭。

我个人习惯把环境搭建分成四块:IDE(集成开发环境)、配置工具(CubeMX)、串口驱动、以及调试用的逻辑分析仪。咱们一块一块来啃。

3.1 Keil MDK 安装——老牌工具,稳如老狗

Keil MDK 是 ARM 单片机开发的老牌 IDE。我最早接触它是在 2010 年左右,那时候还在用 Keil C51。这么多年下来,它最大的优点就是稳定、编译效率高。

安装步骤:

  1. 去 ARM 官网下载 MDK-ARM 安装包(目前最新是 V5.38 或 V5.39)。
  2. 双击安装,一路 Next。注意安装路径不要有中文。
  3. 安装完成后,需要注册。如果你有正版 License,直接输入;如果没有,可以用评估版(代码限制 32KB)。
  4. 安装对应芯片的 Pack 包。比如咱们用 STM32F103,就去 Keil 官网下载 STM32F1xx_DFP 包。
⚠️ 注意: 我曾经遇到过安装完 Keil 后,编译报错说找不到芯片。后来发现是 Pack 包没装对。记住:Keil 本身只是个壳,芯片支持全靠 Pack 包。装完 Keil 第一件事,就是装 Pack。

安装完成后,打开 Keil,点 Project → New μVision Project,选择你的芯片型号。如果能正常弹出芯片选择界面,说明安装成功了。

3.2 STM32CubeIDE——免费且强大,我推荐新手用这个

STM32CubeIDE 是 ST 官方推出的免费 IDE,基于 Eclipse 内核。说实话,我刚开始用的时候觉得它有点慢,但后来发现它的调试功能确实比 Keil 强,而且免费、不限代码大小。

安装要点:

  • 去 ST 官网下载 STM32CubeIDE 安装包(Windows/Linux/Mac 都有)。
  • 安装时注意勾选“安装 ST-Link 驱动”。
  • 安装路径同样不要有中文。

我个人习惯是:Keil 和 CubeIDE 都装。Keil 用来做最终产品的编译(因为它的编译优化更好),CubeIDE 用来做调试和原型验证。你想想看,两个工具互补,多好。

3.3 STM32CubeMX——配置工程的灵魂

STM32CubeMX 是一个图形化配置工具。说白了,你点点鼠标,它就能帮你生成初始化代码。对于电力数据采集这种需要配置 ADC、定时器、串口的项目,它简直是神器。

配置流程:

  1. 打开 CubeMX,点击 New Project,选择芯片型号(比如 STM32F103C8T6)。
  2. Pinout & Configuration 界面,配置外设:
    • RCC: 选择 HSE(外部晶振),一般用 8MHz。
    • SYS: Debug 选择 Serial Wire(如果你用 ST-Link)。
    • USART1: 模式选 Asynchronous,波特率设 115200。
    • ADC1: 配置为连续转换模式,分辨率 12 位。
  3. Clock Configuration 界面,把系统时钟配到 72MHz(F103 的最高主频)。
  4. 点击 Project Manager,设置工程名、路径,IDE 选 MDK-ARM 或 STM32CubeIDE。
  5. 点击 GENERATE CODE,生成代码。
💡 小技巧: 生成代码后,不要手动修改 CubeMX 生成的代码区域(就是那些 /* USER CODE BEGIN *//* USER CODE END */ 之间的部分)。否则下次重新生成时,你的修改会被覆盖。我刚开始就吃过这个亏,改了半天,一重新生成全没了。

3.4 串口驱动安装与调试——数据采集的“嘴巴”

电力数据采集,最终要把数据发到上位机。串口就是最常用的通信方式。但串口驱动装不好,数据就发不出去。

驱动安装:

  • 如果你用的是 USB 转 TTL 模块(比如 CH340、CP2102),需要安装对应的驱动。
  • CH340 驱动:去官网下载,或者用驱动精灵自动安装。
  • CP2102 驱动:Silicon Labs 官网有。

调试方法:

  1. 插上 USB 转 TTL 模块,打开设备管理器,看端口号(比如 COM3)。
  2. 打开串口助手(比如 SSCOM、Putty),设置波特率 115200、数据位 8、停止位 1、无校验。
  3. 用杜邦线把模块的 TX 接板子的 RX,RX 接板子的 TX,GND 接 GND。
  4. 板子通电,如果串口助手能收到数据,说明驱动和硬件都正常。
⚠️ 避坑指南: 我曾经有一次怎么都收不到数据,折腾了半天,最后发现是 TX 和 RX 接反了。记住:交叉连接!交叉连接!交叉连接!重要的事情说三遍。

3.5 逻辑分析仪基础使用——看时序的“眼睛”

逻辑分析仪,说白了就是看信号波形的。在电力数据采集中,你要看 ADC 的采样时序、串口的数据波形、SPI 的时钟和数据线。没有它,你就像瞎子摸象。

基础操作:

  1. 买一个便宜的 8 通道逻辑分析仪(比如 Saleae 的仿品,几十块钱)。
  2. 下载对应的上位机软件(比如 PulseView 或 Saleae Logic)。
  3. 用杜邦线把逻辑分析仪的通道 0 接到板子的 TX 引脚,GND 接 GND。
  4. 设置采样率(一般 24MHz 够用),点击开始采样。
  5. 板子发送一串数据,逻辑分析仪上就能看到高低电平的波形。
  6. 怎么看串口波形?

    • 串口协议是异步的,起始位是低电平,数据位从低位到高位,停止位是高电平。
    • 在逻辑分析仪软件里,添加一个 UART 协议解析器,设置波特率 115200。
    • 软件会自动把波形解析成十六进制数据。比如你发 0x55,波形应该是 01010101(起始位 0 + 数据位 10101010 + 停止位 1)。
    💡 个人经验: 我调试串口时,习惯先发一个 0x55 或 0xAA。这两个字节的波形是交替的 0 和 1,一眼就能看出波特率对不对、信号有没有畸变。如果波形是方方正正的,说明通信质量好;如果边沿圆滑、幅度不够,那就要检查电平匹配了。

    3.6 环境验证——跑一个点灯程序

    所有工具装好后,咱们跑一个最简单的程序来验证环境是否正常。

    步骤:

    1. 用 CubeMX 新建工程,配置一个 GPIO(比如 PA0)为推挽输出。
    2. 生成代码后,在 main 函数里写:
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);   // 点亮 LED
    HAL_Delay(500);                                        // 延时 500ms
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // 熄灭 LED
    HAL_Delay(500);                                        // 延时 500ms
    1. 编译、下载到板子。如果 LED 以 1Hz 的频率闪烁,说明环境搭建成功。

    嗯,到这里,你的开发环境就搭好了。下一章咱们开始真正写电力数据采集的代码。记住:环境搭得越稳,后面写代码越顺。别嫌麻烦,一步到位。