1. 环境搭建与Hello World

任务目标

在MCU开发板上完成嵌入式AI部署的最小环境验证:安装工具链、编译并烧录一个控制LED闪烁的程序,以此确认编译、烧录、串口调试全链路可用。本案例以STM32F407开发板与STM32CubeIDE为例,不涉及具体AI模型,只验证后续部署所需的硬件与软件基础。

环境依赖

  • 硬件:STM32F407开发板(板载LED:PE2)、ST-Link调试器(开发板通常集成)、USB转串口线
  • 软件:STM32CubeIDE 1.15.0及以上(含编译工具链与烧录驱动)、STM32CubeMX固件包(F4系列,IDE内自动下载)
  • 驱动:ST-Link USB驱动(安装IDE时默认包含,若识别异常需单独安装)

工程创建与配置

  1. 打开STM32CubeIDE → File → New → STM32 Project,选择芯片型号STM32F407VGT6。
  2. 在System Core → SYS中,Debug设为Serial Wire(使用SWD接口)。
  3. 在System Core → RCC中,HSE设为Crystal/Ceramic Resonator。
  4. 在System Core → GPIO中,将PE2配置为GPIO_Output,初始电平为High。
  5. 在Connectivity → USART2中,Mode设为Asynchronous,波特率115200,用于串口打印验证。
  6. Project Manager中生成初始代码,编译器版本保持默认(arm-none-eabi-gcc)。

关键完整代码

在生成的工程中,替换main.c中main()函数体(保留初始化调用),并添加LED延时翻转逻辑与串口输出:

/* main.c - 用户代码区域(USER CODE BEGIN 2 至 USER CODE END 3 之间) */
#include <stdio.h>
#include <string.h>

/* 重定向fputc到USART2,使printf可用 */
int __io_putchar(int ch) {
    HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 100);
    return ch;
}

/* USER CODE BEGIN 2 */
printf("Embedded AI Env OK\r\n");
/* USER CODE END 2 */

/* USER CODE BEGIN 3 */
uint32_t tick = 0;
while (1) {
    HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_2);
    HAL_Delay(500);
    tick += 500;
    if (tick % 2000 == 0) {
        printf("LED toggled, uptime: %lu ms\r\n", (unsigned long)tick);
    }
}
/* USER CODE END 3 */

若编译报错__io_putchar未声明,在文件顶部USER CODE BEGIN Includes区域添加:

/* USER CODE BEGIN Includes */
int __io_putchar(int ch);
/* USER CODE END Includes */

编译与烧录

  1. 点击工具栏锤子图标(或Project → Build Project)编译工程,确认Build Finished且0 Error。
  2. 用USB线连接开发板ST-Link接口至PC,点击绿色虫子图标(Run → Debug)启动烧录。
  3. 烧录完成后程序自动运行,IDE进入Debug视图;点击红色方块终止调试,再点击绿色播放按钮(Run)使程序脱离调试器独立运行。

验证方法与判定标准

  1. LED验证:板载LED(PE2)以0.5秒间隔持续闪烁,说明GPIO配置与时钟初始化正确。
  2. 串口验证:将USB转串口模块连接至USART2(PA2-TX、PA3-RX,GND共地),PC端打开串口助手(波特率115200),应观察到:
Embedded AI Env OK
LED toggled, uptime: 2000 ms
LED toggled, uptime: 4000 ms
...

每2秒输出一条递增的uptime信息,证明HAL延时、串口发送与主循环均正常工作。

  1. 工具链验证:编译0 Error且烧录后程序行为符合预期,即证明arm-none-eabi-gcc工具链、ST-Link驱动与调试链路完整可用。

常见问题

  • 烧录报错No ST-Link detected:检查USB连接,确认设备管理器中ST-Link驱动已安装;若使用独立ST-Link,需检查接线(SWDIO、SWCLK、GND)。
  • 串口无输出:确认USART2的PA2/PA3引脚未被其他外设占用;检查串口助手波特率是否与代码一致(115200);部分开发板需额外短接跳线帽使能USB转串口。
  • LED不亮:核对PE2引脚是否与板载LED对应(部分开发板LED在PB0或PD12,需查阅原理图修改引脚);检查GPIO初始电平配置是否正确。

本案例完成后,开发板已具备编译、烧录、调试与串口输出的完整闭环,可作为后续嵌入式AI模型部署的硬件与软件基座。