FreeRTOS学习方法:

FreeRTOS学习方法:
1、多练
    不要只看书,或者只看资料,只“看”是没有任何用的!一定要实际动手写代码练习,多在开发板上练习。
2、遇到不懂的怎么半?
   FreeRTOS还是有一定难度的,在学习的过程中难免会遇到看不懂的东西,如果遇到不懂的就先不要管,先学会怎么调用FreeRTOS的API函数。思考后问,等以后有时间了再回过头来重新学习一下。
3、对C语言的要求
  需要了解指针、结构体、数据结构中的链表等。
FreeRTOS学习方法:_第1张图片

 RTOS特点

  1. 更好的事件实时处理机制
  2. 更高效利用CPU资源
  3. 通用的任务管理框架

 所有操作系统的入口都是中断
要求:项目把控、应用场景、计数了解

FreeRTOS内存配置
内存管理
参数名称 参数说明
MEMORY_ALLOCTION 用于定义内存分配模式
TOTAL_HEAP_SIZE 用于定义动态内存分配总长度
HEAP_NUMBER 用于定义动态内存管理方式

其内存管理就是C语言定义的大数组

FreeRTOS中断
中断优先级
参数名称 参数说明
LIBRARY_LOWEST_INTERRUPT_PRIORITY 此宏定义是用来配置FreeRTOS用到的SysTick中断和PendSV中断的优先级。在NVIC分组设置为4的情况下,此宏定义的范围就是0-15,即专门配置抢占优先级。这里配置为了0x0f,即SysTick和PendSV都是配置了为了最低优先级,实际项目中也建议配置最低优先级即可.
LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

定义了受FreeRTOS管理的最高优先级中断。

任务:


任务特性:

  1. 简单:使用简单,编程简单
  2. 没有限制:任务创建数量没有限制
  3. 支持抢占:最高优先级可以抢占低优先级
  4. 优先级:任务支持优先级排序
  5. 独立堆栈:任务切换时,需要保存CPU运行环境

任务优先级:
FreeRTOS学习方法:_第2张图片

任务实现
FreeRTOS学习方法:_第3张图片

 任务控制块

FreeRTOS的每个任务都有一些属性需要存储,把这些属性集合到一起用一个结构体表示。这个结构体叫做任务控制块(TCB_t)。
任务控制块就是描述任务属性的结构体
任务堆栈信息、任务调度信息、任务创建信息、任务通知信息、任务互斥信息、任务调试信息。

任务堆栈

保存现场:CPU寄存器局部变量
堆栈单位:分配为4个字节为单位
堆栈大小:每个任务都需要自己的栈空间,应用不同,每个任务需要的栈大小也是不同的。

堆栈大小确定:
函数嵌套:函数局部变量、函数形参、函数返回地址、函数内部状态值;
任务切换:所有寄存器都需要入栈,进入中断以后其余通用寄存器和浮点寄存器入栈以及发生中断嵌套都是用的系统栈;
堆栈打印:测试每个任务的堆栈大小

 

 指针:保存内存空间的地址,指向一块内存空间。指针快速高效的操控内存

FreeRTOS学习方法:_第4张图片

FreeRTOS学习方法:_第5张图片

 消息队列:

消息队列的作用:
消息队列(queue),可以在任务与任务间、中断和任务间传递消息
实现任务接收来自其他任务或中断的不固定长度的消息

软件定时器

 

 

 

   

你可能感兴趣的:(单片机,c语言,嵌入式硬件)