当前位置:网站首页>1284_FreeRTOS任务优先级获取实现分析
1284_FreeRTOS任务优先级获取实现分析
2022-06-29 06:51:00 【grey_csdn】
全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)
今天来分析一下FreeRTOS中的优先级获取函数的实现,涉及到2个接口,一个是uxTaskPriorityGet(),另一个是它的中断安全版本uxTaskPriorityGetFromISR()。

这一个接口的实现还是很简单的,在这个实现中直接是关掉了中断,然后去获取任务的优先级。为什么需要关中断呢,我觉得这里主要的原因是xTask可能是NULL,此时要求的是获取当前的任务优先级。如果是产生了中断,这个数据可能会被篡改。

类似的宏实现前面看过好几个了,如果传入的句柄为空的时候其实是处理当前任务的一个凭据。而任务句柄本身是可以转成TCB指针类型的,这样就可以直接获取到优先级的属性。

这个是中断安全的版本,跟前面的这个接口实现在主要的处理过程上差不多。不同点在于,既然是在ISR中,那么是已经有一个中断发生了。这个时候,首先进行了中断优先级的合理性确认,但是这个接口在我现在的配置中无效。接着,不是关中断,取而代之的是修改了中断的掩码防止意料之外的中断发生。在优先级属性数值的获取上跟前面没有大的差异。

这个是掩码修改的实现,修改的时候先做了原始掩码的备份,处理完之后保存原始的掩码。

上一步保存的掩码成了这里掩码恢复的一个依据。

再次复习一下这个basepri寄存器的作用,这个寄存器设置了系统中的最小优先级。ARM中的优先级数值越小优先级越高,因此这个这个数值设置为80的时候,数字上大于等于80的中断就不能够发生了。FreeRTOS能够管理的ISR的优先级应该是较低的一段,因此应该是设置上超过数值80的,或者至少是等于80的。
这样,任务优先级的获取基本就分析完了。后面的接口分析,改天继续。
边栏推荐
- [industrial control old horse] detailed design of PLC six way responder system
- Codeforces Round #799 (Div. 4)
- Behaviortree in ros2
- Reflection perfectionism
- 反思 - 中小公司项目管理思维 - 先将产品做出来,先将功能做出来
- Oracle batch insert data - insert ethnic data
- 【修复收藏功能、更新登录接口】知识付费小程序、博客小程序、完整版开源源码、资源变现小程序,带299整站资源数据
- 自动化测试 - uiautomator2框架应用 - 自动打卡
- PostgreSQL installation: the database cluster initialization failed, stack hbuilder installation
- 打包时提示: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘
猜你喜欢

C mqtt subscription message

打包时提示: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘

【深度之眼吴恩达机器学习作业班第四期】Linear Regression with One Variable,单变量线性回归

MySQL中有哪些约束?(实例验证)

【深度之眼吴恩达机器学习作业班第四期】Logistic Regression 逻辑回归总结

自动化运维管理平台——spug的搭建和日常使用

aws elastic beanstalk入门之简单使用

C actual combat - high configuration version of Snake game design

MongoDB-使用mongo/mongosh命令行连接数据库

STM32基于HAL库的USART+DMA使用
随机推荐
编程能力提升方向
Reflection - project management thinking of small and medium-sized companies - make the products first and the functions first
STM32基于HAL库的USART+DMA使用
Handle series - install spotbugs and use them quickly
MySQL中有哪些约束?(实例验证)
[Kerberos] analysis of Kerberos authentication
产品安全 - 小漏洞导致大问题
Reasons why the ext.dic file configured in ES does not take effect
穿越过后,她说多元宇宙真的存在
Improvement direction of programming ability
电检码配置
MySQL enable logging
《动手学深度学习》(一)-- 线性神经网络
Behaviortree in ros2
Product security - small vulnerabilities cause big problems
SVM,人脸识别遇到的问题及解决方法
自动化测试 - uiautomator2框架应用 - 自动打卡
Electric check code configuration
VMware vcenter/ESXI系列漏洞总结
Cartographer中的线程池操作