其他分享
首页 > 其他分享> > FreeRTOS的重要知识点

FreeRTOS的重要知识点

作者:互联网

系统栈和任务栈

系统栈
系统栈用于中断函数和中断嵌套
系统栈大小在启动文件.S文件中分配
在这里插入图片描述
系统栈指针为MSP指针
任务栈
任务栈用于局部变量,函数形参,现场保护及返回地址等
任务栈大小在FreeRTOSConfig.h文件定义的heap中分配
任务栈指针为PSP指针

临界段 调度锁 任务锁 中断锁

临界段
临界段作用是临界段的代码不允许任何中断打断,即临界段必须一次性执行完成
执行临界段关闭了优先级值大于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY值的所有中断,PendSV中断和SysTick中断优先级最低(优先级值高),因此执行任务切换的PendSV中断和SysTick中断被关闭了,任务切换禁止

临界段API 功能
taskENTER_CRITICAL() 进入临界段
taskEXIT_CRITICAL() 退出临界段
taskENTER_CRITICAL_FROM_ISR() 进入临界段(中断中使用)
taskEXIT_CRITICAL_FROM_ISR() 退出临界段(中断中使用)

调度锁
调度锁是调度器开关函数,处于调度锁开和调度锁关之间的代码不会被高优先级的任务抢占

调度锁API 功能
vTaskSuspendAll() 调度锁开
xTaskResumeAll() 调度锁关

不能在调度锁开关之间执行任何会引起任务切换的函数,如vTaskDelayUntil、vTaskDelay、xQueueSend 等

任务锁
任务锁防止当前任务的执行被高优先级的任务打断,FreeRTOS没有专门的函数,可以使用调度锁或关闭PendSV中断及Systick中断实现同样的功能

中断锁
中断锁是防止中断处理被更高优先级的中断打断,FreeRTOS没有专门的函数,可以使用临界段实现同样的功能

标签:知识点,重要,FreeRTOS,中断,调度,临界,CRITICAL,任务,优先级
来源: https://www.cnblogs.com/ruoshuiqiandian/p/14777037.html