温室任务调度实战
📚 基于嵌入式RTOS
30章
01
RTOS基础概念
什么是RTOS
前后台对比
任务与调度器
临界区
02
温室项目需求分析
温湿度/光照/CO2
风扇/水泵/补光灯
UART/I2C/SPI
03
任务划分与优先级设计
任务拆分原则
Rate Monotonic
任务状态机
04
FreeRTOS移植与配置
源码结构
port层移植
FreeRTOSConfig.h
堆栈计算
05
任务创建与删除
xTaskCreate API
任务句柄
删除的坑
动态vs静态
06
任务调度机制
抢占式调度
时间片轮转
合作式调度
调度锁
07
任务间通信-队列
队列原理
xQueueSend/Receive
队列集
溢出问题
08
任务间通信-信号量
二值信号量
计数信号量
互斥信号量
递归互斥量
09
任务间通信-事件组
事件标志位
事件组API
与信号量区别
多事件同步
10
任务间通信-任务通知
轻量级IPC
通知值/状态
比信号量快45%
11
软件定时器
单次/周期定时器
回调函数
定时器服务任务
周期选择
12
内存管理
heap_1~heap_5
内存碎片
动态分配陷阱
静态分配
13
低功耗管理
Tickless模式
空闲任务钩子
睡眠与唤醒
外设时钟门控
14
中断管理
中断嵌套
Deferred Interrupt
中断安全API
临界区保护
15
任务栈溢出检测
栈溢出钩子
栈使用率统计
栈大小估算
HardFault案例
16
调试与追踪
FreeRTOS+Trace
SEGGER SystemView
断言配置
打印调试
17
温湿度传感器驱动
DHT22/SHT30
I2C时序
错误处理
数据滤波
18
光照传感器驱动
BH1750驱动
ADC采集
光照强度计算
校准方法
19
CO₂传感器驱动
MH-Z19B驱动
PWM/UART模式
预热处理
数据校验
20
执行器驱动
L298N电机驱动
MOS管开关
PWM调速
继电器控制
21
通信协议封装
自定义温室协议
CRC校验
数据帧格式
应答超时
22
数据采集任务实现
多传感器轮询
采样率控制
数据去重
异常值剔除
23
控制算法任务
PID温控
模糊逻辑控制
阈值控制
执行器保护
24
数据显示与日志
OLED显示驱动
日志缓冲区
环形缓冲区
串口打印
25
远程通信任务
ESP8266/ESP32 AT
MQTT移植
JSON封装
心跳机制
26
看门狗与故障恢复
硬件看门狗
任务监控看门狗
系统复位策略
错误日志存储
27
系统启动流程
硬件初始化
RTOS启动
任务创建顺序
自检流程
28
性能优化
任务优先级调整
调度延迟优化
中断延迟优化
代码执行时间测量
29
综合调试案例
死锁排查
优先级反转
任务饿死
内存泄漏定位
30
项目总结与扩展
代码规范
文档编写
OTA升级
多温室组网