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时默认包含,若识别异常需单独安装)
工程创建与配置
- 打开STM32CubeIDE →
File → New → STM32 Project,选择芯片型号STM32F407VGT6。 - 在
System Core → SYS中,Debug设为Serial Wire(使用SWD接口)。 - 在
System Core → RCC中,HSE设为Crystal/Ceramic Resonator。 - 在
System Core → GPIO中,将PE2配置为GPIO_Output,初始电平为High。 - 在
Connectivity → USART2中,Mode设为Asynchronous,波特率115200,用于串口打印验证。 - 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 */
编译与烧录
- 点击工具栏锤子图标(或
Project → Build Project)编译工程,确认Build Finished且0 Error。 - 用USB线连接开发板ST-Link接口至PC,点击绿色虫子图标(
Run → Debug)启动烧录。 - 烧录完成后程序自动运行,IDE进入Debug视图;点击红色方块终止调试,再点击绿色播放按钮(
Run)使程序脱离调试器独立运行。
验证方法与判定标准
- LED验证:板载LED(PE2)以0.5秒间隔持续闪烁,说明GPIO配置与时钟初始化正确。
- 串口验证:将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延时、串口发送与主循环均正常工作。
- 工具链验证:编译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模型部署的硬件与软件基座。