一、项目概述

本项目是基于 STM32F103C8T6​ 主控芯片,搭载 FreeRTOS​ 实时操作系统开发的一款桌面温湿度闹钟。项目集成了 DHT11 温湿度采集DS1302 RTC 实时时钟TC5020EJ LED 灯板显示NV020D 音频提示以及按键、触摸和声控交互功能。

项目摒弃了传统的裸机轮询开发模式,采用 RTOS 多任务机制,有效解决了单总线传感器时序冲突和音频播放卡顿的问题。目前代码已开源,工程结构清晰,适合嵌入式初学者和求职者参考。

项目开源地址:

  • GitHub: https://github.com/Xuxiupa/stm32-humiture-app
  • Gitee: https://gitee.com/yin-yongchu103/stm32-humiture-app

二、硬件选型与原理

  • MCU:STM32F103C8T6(Cortex-M3 内核,主频 72MHz)
  • 温湿度传感器:DHT11(单总线通信,对时序敏感)
  • 实时时钟:DS1302(三线制通信,带备用电池)
  • 显示驱动:TC5020EJ LED 灯板(扫描显示)
  • 音频芯片:NV020D(高优先级时序控制)
  • 调试下载:ST-Link / CMSIS-DAP

三、软件设计与 FreeRTOS 任务划分

软件基于 STM32CubeMX​ 生成 HAL 库工程,移植 FreeRTOS 实现多任务管理。核心设计在于任务优先级的合理分配

任务名称

主要职责

优先级策略

采集任务

读取 DHT11 温湿度数据

中(关键段加临界区保护)

显示任务

刷新 LED 灯板

低(非实时刷新)

按键任务

检测物理/触摸/声控输入

闹钟任务

比较当前时间与闹钟时间

中高

音频任务

控制 NV020D 播放提示音

(必须保证时序准确)

设计亮点:将音频播放剥离为高优先级任务,避免被显示刷新或数据采集任务阻塞,解决了音频时序错乱问题。


四、关键问题与解决方案(CSDN 读者最爱看)

在开发过程中,遇到了几个典型的嵌入式坑点,记录如下:

1. PendSV 中断映射错误

  • 现象:系统启动后运行异常,任务无法切换。
  • 原因:Cortex-M 内核的任务切换依赖 PendSV 异常,错误地将 PendSV_Handler 映射到了错误的函数名。
  • 解决:修正宏定义 #define xPortPendSVHandler PendSV_Handler,确保向量表正确跳转到 FreeRTOS 的切换函数。

2. DHT11 数据读取不稳定

  • 现象:温湿度数值偶尔跳变或读取失败。
  • 原因:单总线协议对微秒级时序要求极高,采集过程中被 FreeRTOS 的任务调度打断。
  • 解决:在 DHT11 的起始信号和读取数据位的关键代码段前后,使用 taskENTER_CRITICAL()taskEXIT_CRITICAL() 进入临界区,暂时关闭任务切换。

3. 音频播放时序错乱

  • 现象:NV020D 芯片播放声音断断续续。
  • 解决:将音频播放逻辑放入独立的高优先级任务中,确保 CPU 优先处理音频时序。

五、工程结构与编译烧录

本工程采用标准 CubeMX 生成的结构,配合 .gitignore 过滤编译垃圾,保持仓库整洁。

  • Core/:存放应用层代码(main.c、FreeRTOS 任务、各外设驱动)
  • Drivers/:存放 STM32 的 HAL 库和 CMSIS 核心文件
  • MDK-ARM/:存放 Keil 工程配置文件
  • Humiture.ioc:STM32CubeMX 的工程配置文件

编译与烧录:

  1. 使用 Keil MDK-ARM 打开 MDK-ARM/Humiture.uvprojx
  2. 选择 ST-Link 下载器进行烧录。
  3. 代码规范遵循 Conventional Commits(如 feat:, fix:, docs:),便于版本管理。

六、演示效果与源码开源

目前项目已打上 v1.0 标签,功能稳定。系统上电后,LED 灯板正常显示时间,温湿度数据实时更新,闹钟触发时音频正常播报,按键交互流畅。

如果你正在学习 FreeRTOS 的任务调度、中断管理,或者正在寻找 STM32 实战项目作为简历作品,希望这个项目能帮到你。

实物图: 

 

如果觉得有用,欢迎 Star / Fork!

  • GitHub: https://github.com/Xuxiupa/stm32-humiture-app
  • Gitee: https://gitee.com/yin-yongchu103/stm32-humiture-app

 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐