📘 FreeRTOS·STM32移植
30章 完整实战
⭐
友好 · 系统入门
1
FreeRTOS简介与移植准备
了解FreeRTOS,选择理由,软硬件环境:STM32、Keil/IAR、源码包
2
FreeRTOS源码结构解析
目录结构,核心文件 tasks.c, queue.c, list.c 及移植层 port.c, portmacro.h
3
STM32启动文件与系统时钟配置
配置启动文件、HSE/PLL,为FreeRTOS提供准确系统节拍
4
FreeRTOSConfig.h配置文件详解
逐行讲解宏定义:CPU时钟、TICK频率、堆大小等关键配置
5
portmacro.h 数据类型重定义
根据Cortex-M3/M4重定义 StackType_t, BaseType_t 等
6
port.c PendSV与SysTick实现
深入分析 vPortSetupTimerInterrupt, xPortPendSVHandler, vPortSVCHandler
7
中断优先级配置与FreeRTOS关联
STM32中断分组 & configMAX_SYSCALL_INTERRUPT_PRIORITY
8
内存管理方案:heap_1 ~ heap_5
对比5种内存方案,优缺点与适用场景
9
基础任务创建与调度
第一个FreeRTOS程序,两个任务,观察调度效果
10
任务状态与任务控制块(TCB)
运行、就绪、阻塞、挂起,TCB结构深入理解
11
任务优先级与调度算法
抢占式调度、时间片轮转调度实现
12
任务创建与删除API详解
xTaskCreate, xTaskCreateStatic, vTaskDelete 参数与用法
13
任务挂起与恢复
vTaskSuspend, vTaskResume, vTaskSuspendAll, xTaskResumeFromISR
14
队列(Queue)原理与实现
数据结构,xQueueCreate, xQueueSend, xQueueReceive
15
队列在中断中的使用
xQueueSendFromISR, xQueueReceiveFromISR 中断安全API
16
信号量(Semaphore)详解
二值/计数型信号量,xSemaphoreCreateBinary, Give, Take
17
互斥量(Mutex)与优先级反转
互斥量原理,优先级反转与FreeRTOS优先级继承机制
18
递归互斥量(Recursive Mutex)
使用场景,xSemaphoreCreateRecursiveMutex 等API
19
事件组(Event Groups)详解
原理,xEventGroupCreate, SetBits, WaitBits
20
任务通知(Task Notifications)
高效通知,xTaskNotifyGive, ulTaskNotifyTake
21
软件定时器(Software Timer)
原理,xTimerCreate, xTimerStart, xTimerStop
22
流缓冲区 & 消息缓冲区
Stream Buffer, Message Buffer 原理与使用
23
低功耗Tickless模式
低功耗原理,configUSE_TICKLESS_IDLE 配置
24
中断管理最佳实践
安全使用中断,延迟中断处理(Deferred Interrupt Processing)
25
任务堆栈溢出检测
堆栈溢出检测机制,配置与使用
26
运行时统计与性能分析
配置运行时统计,分析任务CPU占用率
27
调试技巧与常见问题
断言失败分析,HardFault定位等调试技巧
28
多任务同步与通信综合案例
队列、信号量、事件组实现多任务同步通信
29
FreeRTOS在STM32高级应用
与DMA、ADC、定时器等外设结合使用
30
项目实战:温湿度采集与显示
完整项目:任务划分、通信协议、数据显示