1. 课程导学与开发环境搭建

大家好,欢迎来到《STM32多传感器数据采集与FreeRTOS移植实战》的第一章。

说实话,我做了十几年嵌入式开发,带过不少新人。大家最常犯的错,不是代码写不对,而是环境没搭好就开始干。结果呢?编译报错、下载失败、串口没输出……一折腾就是半天。所以这一章,咱们把地基打牢。

1.1 课程目标:我们要做什么?

这门课不是讲理论,是实战。你跟着我走完30章,能收获什么?

  • 掌握多传感器采集:温度、湿度、气压、加速度、光强……怎么同时读,怎么不打架。
  • 学会FreeRTOS移植:从裸机思维切换到多任务思维,任务调度、信号量、队列,全走一遍。
  • 搞定工程化开发:代码结构、调试技巧、低功耗设计,这些我在项目里踩过的坑,全告诉你。

一句话总结:学完这门课,你能独立完成一个带实时操作系统的多传感器嵌入式项目。

1.2 STM32选型建议:别选错了

很多新手问我:“老师,学这个用哪款芯片?”我的回答是:别用最便宜的,也别用最贵的。

我个人习惯,教学和原型验证阶段,首选STM32F407VET6。为什么?

参数 STM32F103C8T6 STM32F407VET6 STM32H743
主频 72 MHz 168 MHz 480 MHz
SRAM 20 KB 192 KB 1 MB
Flash 64 KB 512 KB 2 MB
FPU 无 有(单精度) 有(双精度)
价格(参考) ~8元 ~25元 ~80元
适合场景 简单裸机 FreeRTOS + 多传感器 高级应用

你看,F407有FPU,做传感器数据滤波时快很多。192KB的SRAM跑FreeRTOS加几个任务,绰绰有余。我在一个工业采集项目里用过F103,跑三个任务就爆内存了……后来换了F407,稳得很。

我的建议:如果你手头只有F103开发板,也能学,但有些高级功能(比如DMA+多路ADC)会受限。预算允许的话,直接上F407系列。

1.3 Keil MDK安装:别跳过这一步

Keil MDK,说白了就是ARM的IDE。我见过有人用IAR、有人用STM32CubeIDE,但说实话,Keil在调试和工程管理上,对新手最友好。

安装步骤很简单,但有几个坑我得提醒你:

  1. 版本选择:我建议用MDK 5.38或以上。太老的版本不支持新器件包。
  2. 安装路径:不要有中文!不要有空格!我见过有人装在“D:\程序\Keil_v5”,结果编译报错找不到头文件……
  3. 破解:嗯,这个你懂的。但注意,破解后要检查License有效期,别用到一半过期了。
  4. 器件包:安装完后,打开Pack Installer,搜索STM32F4,下载对应的DFP包。

我曾经遇到过一个问题:装完Keil后死活找不到STM32芯片。折腾了两小时,才发现是器件包没装。所以,装完Keil第一件事,就是装Pack。

1.4 STM32CubeMX配置:图形化生成代码

STM32CubeMX,是ST官方出的图形化配置工具。你想想看,以前配时钟要翻几百页手册,现在点几下鼠标就搞定了。

咱们这门课,所有外设初始化都用CubeMX生成。我带你走一遍基本流程:

  • 新建工程:选择芯片型号,比如STM32F407VET6。
  • 配置时钟:HSE选8MHz晶振,PLL倍频到168MHz。我习惯把APB1设为42MHz,APB2设为84MHz。
  • 配置外设:USART1(串口)、I2C1(传感器)、SPI1(显示屏)、ADC1(模拟采集)。
  • 生成代码:选择MDK-ARM V5,勾选“初始化所有外设”,点击生成。

这里有个小技巧:生成代码后,不要手动修改CubeMX生成的代码。如果你要加自己的逻辑,写在/* USER CODE BEGIN */和/* USER CODE END */之间。否则下次重新生成,你的代码会被覆盖。

核心原则:CubeMX管初始化,你管业务逻辑。各司其职,互不干扰。

1.5 串口驱动安装与验证:你的第一个调试工具

串口,是嵌入式开发者的眼睛。没有串口,你连芯片在干什么都不知道。

咱们用的开发板,通常板载一个USB转串口芯片,常见的有CH340、CP2102、FT232。安装驱动很简单:

  1. 插上开发板,打开设备管理器。
  2. 看“端口(COM和LPT)”下面有没有出现新设备。
  3. 如果有黄色感叹号,说明没装驱动。去官网下载对应驱动安装。
  4. 装好后,记住COM口号,比如COM3。

验证方法:用串口助手(比如SSCOM、Putty)打开对应COM口,波特率设115200,数据位8,停止位1,无校验。然后给开发板上电,如果串口助手能收到数据,说明驱动装好了。

我曾经遇到一个很诡异的问题:串口助手能打开COM口,但收不到数据。查了半天,发现是USB线的问题——那根线只能充电,不能传数据。所以,一定要用带数据传输功能的USB线。

1.6 本章知识体系

下面这张图,帮你理清本章的知识结构:

第一章知识体系图 第一章:课程导学与开发环境搭建 开发环境搭建 课程目标 多传感器采集 FreeRTOS移植 工程化开发 STM32选型 F103(入门) F407(推荐) H743(高级) 工具安装 Keil MDK STM32CubeMX 串口驱动 核心:先搭环境,再写代码,避免返工

1.7 验证你的环境

环境搭好了,怎么知道对不对?我教你一个最简单的验证方法:

  1. 打开Keil,新建一个空工程。
  2. 写一个main函数,里面就一行:printf("Hello World!\n");
  3. 配置串口重定向,把printf输出到USART1。
  4. 编译、下载、打开串口助手。
  5. 如果看到“Hello World!”,恭喜你,环境搭好了。

注意:printf重定向需要实现fputc函数。如果你不知道怎么配,别急,下一章我会手把手教你。

好了,第一章就到这里。环境搭好了,后面的事就顺了。咱们第二章见。