堆和栈
堆
栈
返回地址保存在栈中
添加串口打印功能
去掉无关代码、LCD等
增加串口打印功能
- 初始化串口
- 实现fputc
标准库移植
将官方标准库移植到STM32F103C8T6
常见变量类型
TaskHandle_t
是任务句柄类型,指针类型,原型为void *
StackType_t
是任务堆栈类型,整型类型,原型为uint32_t
StackTask_t
是任务块类型,结构体,原型为xSTATIC_TCB
结构体
移植注意事项
FreeRTOSConfig.h
配置中断服务
1 | /**************************************************************** |
Serial.c
注意串口波特率一致性
尽量使用printf
而不使用自定义Serial_Printf
main.c
注意开启vTaskStartScheduler
创建任务
静态SARM内存
需要开启静态内存
1 | //支持静态内存 |
静态内存任务开启区函数
1 | LEDTask_Handle = xTaskCreateStatic((TaskFunction_t)LED_Task, //任务LED |
动态SARM内存
不开启静态内存
动态内存任务开启函数
1 | xReturn = xTaskCreate((TaskFunction_t)LED_Task, //任务LED |
注意动态和静态的开启函数区别,参数不同,参数类型也不同。
多任务
多任务相较于单任务,区别只在任务开启的个数,对应参数填好,开启任务即可实现多任务。