FReeRtos中断管理、临界段保护和任务调度器挂起和恢复学习

FReeRtos中断管理(优先级)

中断优先级数值越小越优先

所有优先级配置为抢占优先级,选4组

SysTick 滴答定时器中断

  • 作用:系统时钟节拍,统计任务延时、阻塞时间

  • 每隔 1ms(常用)进一次中断,给系统计时

2)PendSV 可挂起系统调用中断

  • 作用:专门用来做任务上下文切换

  • 所有任务切换,全都在 PendSV 里完成

  1. FreeRTOS 要求:PendSV 优先级 = 最低

  2. SysTick 优先级 > PendSV

  3. 所有业务中断优先级 > SysTick

原因

  1. PendSV 优先级最低 保证:只有所有高优先级中断全部执行完、没事干了,才进来切换任务 避免:中断跑一半被任务切换打断,数据错乱、时序炸掉

  2. SysTick 比 PendSV 高一点 滴答计时能正常跑,不会被任务切换耽误系统节拍

  3. 你的外部中断 / 定时器中断 优先级 > SysTick 紧急硬件事件优先响应,不会被系统调度卡住

开中断关中断

portDISABLE_INTERRUPTS()

只能关闭:优先级 5 ~ 15(逻辑优先级)

关不掉:优先级 0 ~ 4(逻辑优先级)

出现问题

1.调用 portDISABLE_INTERRUPTS (),所有定时器中断全都关不掉

直接填写逻辑值 5,没有做硬件优先级移位,FreeRTOS 判断阈值错误,无法匹配真实中断优先级。

定时器中断优先级设置错误,设置为0~4 高优先级区间,本身就不在屏蔽范围内。

解决办法:恢复 FreeRTOS 官方标准宏定义(必须移位)

复制代码
#define configMAX_SYSCALL_INTERRUPT_PRIORITY  ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )

区分设置中断优先级

  • 需要被关闭 的中断:设置逻辑优先级 ≥5
  • 永久不被关闭 的中断:设置逻辑优先级 ≤4

问题 2:关闭中断后,延时完成无法执行 portENABLE_INTERRUPTS (),无开中断打印

故障原因

portDISABLE_INTERRUPTS()关闭系统可管理中断后,SysTick 系统节拍中断被屏蔽

  • vTaskDelay()HAL_Delay() 均依赖 SysTick 中断计时
  • 关中断区间内使用系统延时 / 硬件延时函数,会直接死锁,代码卡死,永远执行不到开中断代码

解决办法

  1. 关中断临界区内禁止使用任何系统延时、HAL 延时
  2. 仅使用裸机空循环延时做短暂延时

问题 3:误以为填写优先级 4 就能被关闭,实际无效

故障原因

  1. 混淆逻辑优先级硬件真实优先级
  2. FreeRTOS 屏蔽规则:只屏蔽逻辑优先级 5~15,0~4 属于硬件高优先级,设计上禁止被任务关闭

解决办法

  1. 牢记区间划分
    • 屏蔽区间:逻辑优先级 5 ~ 15 → 可被portDISABLE_INTERRUPTS()关闭
    • 保护区间:逻辑优先级 0 ~ 4 → 任何任务关中断都无法关闭
  2. 实验严格分区测试:高优先级放 0-4,普通中断放 5 及以上

FreeRtos临界段保护

本质为进去临界区关中断,退出临界区开中断

和临界区保护有本质区别,临界区保护需要关中断进行,挂起任务调度器(只是关闭任务的切换)不需要关闭中断

相关推荐
Hello_Damon_Nikola6 分钟前
HT2813从入门到精通
单片机·嵌入式硬件·物联网
天空'之城1 小时前
单片机基础核心知识点汇总(二)
单片机·嵌入式硬件
恒锐丰-罗生1 小时前
宽压降压电源新选择|CN8610 60V/1A 异步降压芯片,车载 / 工业 IoT 一站式解决方案
嵌入式硬件·硬件工程
恒锐丰-罗生1 小时前
宽压降压新标杆!CN8810 4.5~100V 高压 DCM 异步降压芯片,车载 / 工业 IoT 全能电源方案
嵌入式硬件·硬件工程
Devlab10 小时前
LVGL设计大师——网页版anyui来了!!
嵌入式硬件·物联网·低代码·ui·iot
Dr.kangder14 小时前
嵌入式面试总结(十五)——异常处理
单片机·面试·职场和发展·系统架构·嵌入式
zlinear数据采集卡16 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛1392462567316 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
Rocktech_ruixun18 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界18 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件