#define   configPRIO_BITS                4#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY                15
//系统可管理的最高中断优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY         5 #define configKERNEL_INTERRUPT_PRIORITY      ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )  /* 240 */#define configMAX_SYSCALL_INTERRUPT_PRIORITY   ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) /* 80 */

1、#define configPRIO_BITS 4

此宏定义用于配置STM32的8位优先级设置寄存器实际使用的位数。对于M3和M4内核的MCU,每个中断的优先级都是用寄存器中的8位来设置的。8位的话就可以设置2^8 = 256级中断,实际中用不了这么多,所以芯片厂商根据自己生产的芯片做出了调整。比如ST的STM32F1xx和F4xx只使用了这个8位中的高四位[7:4],低四位取零,这样2^4=16,只能表示16级中断嵌套。Reset、NMI、Hard Fault 优先级为负数,高于普通中断优先级,且优先级不可配置。

2、#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5

就是说当这个宏定义配置为 5 的时候,中断优先级数值在 0、 1、 2、 3、 4 的这些中断是不受 FreeRTOS 屏蔽的, 也就是说即使在系统进入临界段的时候,这些中断也能被触发而不是等到退出临界段的时候才被触发,当然,这些中断服务函数中也不能调用 FreeRTOS 提供的 API 函数接口,而中断优先级在 5 到 15 的这些中断是可以被屏蔽的,也能安全调用 FreeRTOS 提供的 API 函数接口。

实际使用FreeRTOS报错:

Error:…\FreeRTOS\port\RVDS\ARM_CM4F\port.c,769
中断管理出现问题,定时器优先级太高不受RTOS管理,导致中断服务函数不能调用RTOS的API函数。

3、#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15

configLIBRARY_LOWEST_INTERRUPT_PRIORITY 是用于配置 SysTick 与 PendSV 的。也就是让 SysTick 与 PendSV配置为最低优先级。写成15的原因是因为NVIC都是抢占优先级0-15,15是最低优先级。

4、#define configKERNEL_INTERRUPT_PRIORITY 240

这个数值是赋值给寄存器basepri使用的是实际的优先级数值而我们说的NVIC里面的抢占优先级和子优先级配置是仅考虑高4bit即可,因为我们调用NVIC配的时候已经帮我们配置好了。其中SysTick和PendSV中断的优先级240就是15左移4位的结果。这里为什么要左移四位呢,STM32的优先级设置仅使用高4位。而SVC的优先级就是0,可以理解为0左移4位还是0。

5、#define configMAX_SYSCALL_INTERRUPT_PRIORITY 80

是实际的优先级数值,而我们说的NVIC里面的抢占优先级和子优先级配置是仅考虑高4bit即可,因为我们调用NVIC配的时候已经帮我们配置好了)这个数值是赋值给寄存器basepri使用的,8bit的数值才可以实际赋值给相应中断的优先级寄存器。这里的宏定义数值赋给寄存器basepri后就可以实现全局的开关中断操作了。比如:我们这里配置宏定义configLIBRARY_LOWEST_INTERRUPT_PRIORITY是0x05,经过4bit偏移后就是0x50,即80。调用了FreeRTOS的关中断后,所有优先级数值大于等于80的中断都会被关闭。优先级数值小于 80 的中断不会被关闭,对寄存器 basepri 寄存器赋值 0, 那么被关闭的中断会被打开。
优先级数值小于80的中断不会被关闭,对寄存器basepri寄存器赋值0,那么被关闭的中断会被打开。这里的80不是指真正的抢占优先级,而是为了给basepri 寄存器赋值,真正对应的是抢占优先级5,也就是抢占优先级大于5的中断进入临界区会被屏蔽。

Qus:我的问题是抢占优先级是0-15,怎么会有大于80的优先级,临界区屏蔽的中断到底和哪个宏定义有关。
Ans:80(是实际的优先级数值,而我们说的NVIC里面的抢占优先级和子优先级配置是仅考虑高4bit即可,因为我们调用NVIC配的时候已经帮我们配置好了。

1、我认为临界段中断的屏蔽是和
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY有关,把这个宏定义理解透,然后把系统优先级NVIC全配置成抢占优先级,中断管理也就理解了。
2、还有必须分清楚中断优先级和任务优先级,两者本身没有联系,中断优先级永远可以打断任务优先级,除非任务优先级受到临界段保护。

Free RTOS 中断优先级配置相关推荐

  1. FreeRTOS的中断优先级配置小结

    NVIC 的全称是 Nested vectored interrupt controller,即嵌套向量中断控制器.对于 M3 和 M4 内核的 MCU,每个中断的优先级都是用寄存器中的 8 位来设置 ...

  2. 【TDA2x学习】Vision SDK 编译Linux+RTOS的配置

    文章目录 一.安装lib 1.1.编译VSDK必须的lib 1.2.其他的lib 二.Linux+RTOS编译 2.1.声明`INSTALL_DIR`路径: 2.2.修改Rules.make的MAKE ...

  3. [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247483680&idx=1&sn=c5fd069ab3f ...

  4. 嵌入式中断:如何正确设置中断优先级 (万字总结) - 基于Cortex-M和FreeRTOS

    嵌入式中断:深入探讨如何正确设置中断优先级 - 基于Cortex-M和FreeRTOS 1. 如何正确设置中断优先级 2. 从Cortex-M角度 configPRIO_BITS 3. 从RTOS角度 ...

  5. 开发板移植RTOS操作系统,RTOS操作系统适配开发板整理大全

    文章目录 一.单片机/嵌入式有无操作系统的区别 二.操作系统时的分层架构图 三.移植FreeRTOS到小熊派开发板(STM32L431RC) 1. 硬件准备 2. 下载FreeRTOS源码 2.1. ...

  6. FreeRTOS EFM32 中断配置

    FreeRTOS: FreeRTOSConfig.h中定义了两个宏,分别是: /* Interrupt nesting behaviour configuration. */ #define conf ...

  7. RTOS随笔之FreeRTOS

    RTOS几点思考 为什么使用RTOS? 1. 先考虑OS有什么特点? 2. 再考虑什么情况下使用OS? FreeRTOS调试技巧 任务管理 1. 任务调度流程 2. 任务栈大小,栈溢出检测 3. 中断 ...

  8. FreeRTOS 中断优先级嵌套错误引发HardFault异常解决

    最近在使用FreeRTOS的时候,突然发现程序在运行了几分钟之后所有的任务都不再调用了,只有几个中断能正常使用,看来是系统挂掉了,连续测试了几次想找出问题,可是这个真的有点不知所措. 我先看了下文档里 ...

  9. stm32中断优先级快速入门

    1.基本概念 STM32(Cortex-M3架构)中有两个优先级的概念--抢占式优先级和响应优先级.有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优 ...

最新文章

  1. 什么是静态UItableView
  2. 博主谈:聊聊我们说的网站优化
  3. flannel源码分析--WatchLeases
  4. 干货|kafka最佳实践
  5. FutureTask的使用
  6. 分词之后的如何做特征选择_干货分享!做外贸遇到空运订舱之后走不了如何处理,你知道吗?收藏...
  7. 思源高拍仪万能驱动_动态展示和教学 良田YL1050AF高拍仪评测
  8. python中seek函数的用法_在Python中操作文件之seek()方法的使用教程
  9. windows安装TortoiseGit详细使用教程
  10. 作业要求 20171130 每周例行报告
  11. playframe 项目搭建
  12. upupoo设置HTML壁纸,win10 upupoo黑屏怎么解决-解决upupoo设置壁纸黑屏的方法 - 河东软件园...
  13. hdu - 5033 - Building(单调栈)
  14. Reduce归约 证明原理
  15. iOS9新系统下App Store应用上传新指南
  16. 计算机网络国家职业三级,计算机网络管理员国家职业标准
  17. 安卓模拟ibeacon_Android BLE-iBeacon系列(一)iBeacon介绍
  18. 好多粉数据上报之360点睛平台ocpc API上报数据方法
  19. 计算机强制关机后无法正常启动,win10系统强制关机后无法正常启动了如何解决...
  20. xlsx表格怎么筛选重复数据_怎样在excel2010中筛选出重复数据呢?

热门文章

  1. RPA技术可行性方案确认-辅助手册
  2. 你的磁力链为什么下不动了?(干货)
  3. 把Windows资源管理器结束任务了,电脑黑屏的解决方案
  4. 混合开发Android FlutterActivity 的透明状态栏
  5. 信息学奥赛一本通:1168:大整数加法
  6. 搜索光纤测试软件,了解光纤的常用工具及使用方法
  7. 轮回混音 佛教童音dj (1.0)
  8. Browser 浏览器内核
  9. 《Android开发卷——实时监听文本框输入》
  10. Java爬虫Ins博主所有帖子的点赞和评论导出excel