当前位置: 首页 > news >正文

代做网站怎么进行域名备案wordpress如何去除底部

代做网站怎么进行域名备案,wordpress如何去除底部,企业人力资源管理师,网站展现形式FreeRTOS任务优先级和中断的优先级 前言硬件中断的优先级规则FreeRTOS任务的优先级规则FreeRTOS对中断优先级的管理具体的应用场景说明 混淆点澄清FreeRTOS任务优先级 vs 中断优先级任务优先级与中断优先级的本质区别注意事项 FreeRTOS的中断管理逻辑任务与中断的交互规则 实践…

FreeRTOS任务优先级和中断的优先级

  • 前言
  • 硬件中断的优先级规则
  • FreeRTOS任务的优先级规则
  • FreeRTOS对中断优先级的管理
    • 具体的应用场景说明
  • 混淆点澄清
    • FreeRTOS任务优先级 vs 中断优先级
      • 任务优先级与中断优先级的本质区别
      • 注意事项
    • FreeRTOS的中断管理逻辑
    • 任务与中断的交互规则
  • 实践举例
    • 任务优先级配置
    • 中断优先级配置
    • 允许调用API的中断配置
    • 禁止调用API的高优先级中断

前言

可能你也有这样的疑问:中断的优先级数值越小,优先级越大还是越小?FreeRTOS的任务而言,数值越小,优先级是越大还是越小?什么是FreeRTOS管理中断的逻辑?这些FreeRTOS任务优先级和中断的优先级总是让人混淆,本文就此问题展开论述。

硬件中断的优先级规则

在大多数微控制器(如ARM Cortex-M)中:

  • 数值越小,优先级越高

例如,Cortex-M的中断优先级寄存器通常为8位,但仅使用高几位(如4位),范围为0~15。其中:

  • 0 表示最高优先级(可打断其他所有中断)。
  • 15 表示最低优先级(被其他中断打断)。

FreeRTOS任务的优先级规则

FreeRTOS中:

  • 数值越大,优先级越高
    通过tskIDLE_PRIORITY(通常为0)定义最低优先级,用户任务优先级范围为1~configMAX_PRIORITIES-1。例如:
    // 创建一个优先级为3的任务(数值越大优先级越高)
    xTaskCreate(vTaskFunction, "Task", 1000, NULL, 3, NULL);
    

FreeRTOS对中断优先级的管理

在硬件中断优先级体系里,数值越小就代表优先级越高。以ARM Cortex - M为例,中断优先级的范围一般是0到15,其中0是最高优先级,15则是最低优先级。
FreeRTOS通过configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY宏定义最高可管理的中断优先级,但这里的数值规则与硬件一致:

  • 数值越小,优先级越高
    例如:
    // 配置FreeRTOS可管理的最高中断优先级为5(数值越小优先级越高)
    #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
    

这意味着,优先级数值≤5的中断,其优先级较高;而优先级数值>5的中断,优先级相对较低。

FreeRTOS借助调整BASEPRI寄存器来屏蔽优先级较低的中断,以此保障关键操作(像任务切换)的原子性。这里有几个关键点需要掌握:

  • 可管理的中断优先级:当配置为5时,优先级数值≥5的中断能够被FreeRTOS屏蔽。这类中断可以安全地调用FreeRTOS的ISR专用API,例如xQueueSendFromISR()
  • 系统关键中断优先级:优先级数值<5的中断,FreeRTOS无法对其进行屏蔽。这类中断属于高优先级中断,在使用时要格外谨慎,不能调用FreeRTOS API。

具体的应用场景说明

  1. 允许调用API的中断配置
    对于那些需要和任务进行通信的中断,要把它们的优先级设置为≥5。下面是一个示例:
// 配置外部中断优先级为5(和FreeRTOS可管理的最高优先级相同)
NVIC_SetPriority(USART1_IRQn, 5);void USART1_IRQHandler(void) {// 进行接收处理BaseType_t xHigherPriorityTaskWoken = pdFALSE;xQueueSendFromISR(xRxQueue, &cRxChar, &xHigherPriorityTaskWoken);// 若有必要,进行任务切换portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
  1. 禁止调用API的高优先级中断
    系统关键中断,例如滴答定时器(SysTick),其优先级数值要设置为<5,并且在中断服务函数中不能调用FreeRTOS API。示例如下:
// 配置SysTick优先级为1(高优先级,不可被FreeRTOS屏蔽)
NVIC_SetPriority(SysTick_IRQn, 1);void SysTick_Handler(void) {// 执行关键操作,禁止调用FreeRTOS APItimer_update();
}

混淆点澄清

FreeRTOS任务优先级 vs 中断优先级

任务优先级与中断优先级的本质区别

  1. 任务优先级

    • 范围:0(空闲任务)到configMAX_PRIORITIES-1
    • 规则:数值越大优先级越高,高优先级任务可抢占低优先级任务。
    • 调度方式:由FreeRTOS内核通过任务切换实现。
  2. 中断优先级

    • 范围:由硬件决定(如Cortex-M的0~15)。
    • 规则:数值越小优先级越高,高优先级中断可抢占低优先级中断。
    • 调度方式:由硬件直接控制,不受FreeRTOS调度器管理。

注意事项

任务 vs 中断:中断优先级始终高于任务,无论任务优先级多高,中断都会立即响应。

FreeRTOS的中断管理逻辑

FreeRTOS通过调整BASEPRI寄存器屏蔽低优先级中断,但屏蔽规则与硬件一致

  • BASEPRI=5,则优先级数值≥5的中断被屏蔽,优先级数值<5的中断仍可触发。

任务与中断的交互规则

  1. 中断始终优先于任务
    无论任务优先级多高,当中断发生时:

    • 中断服务函数(ISR)会立即执行。
    • 任务被暂停,直到ISR返回。
  2. FreeRTOS对中断的限制

    • 可管理中断(优先级≥configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY):
      可调用FreeRTOS API,可能触发任务切换(如xTaskResumeFromISR())。
    • 不可管理中断(优先级<configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY):
      禁止调用FreeRTOS API,执行期间无法被FreeRTOS屏蔽。

实践举例

任务优先级配置

使用较小数值定义低优先级任务,较大数值定义高优先级任务:

// 低优先级任务(后台处理)
xTaskCreate(vBackgroundTask, "Background", 1000, NULL, 1, NULL);// 高优先级任务(实时处理)
xTaskCreate(vCriticalTask, "Critical", 1000, NULL, configMAX_PRIORITIES-1, NULL);

中断优先级配置

将需要调用FreeRTOS API的中断优先级设置为不低于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

// 配置外部中断0的优先级为5(与FreeRTOS可管理的最高优先级一致)
NVIC_SetPriority(EXTI0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);

这里的优先级数值必须大于等于5!

允许调用API的中断配置

对于那些需要和任务进行通信的中断,要把它们的优先级设置为≥5。下面是一个示例:

// 配置外部中断优先级为5(和FreeRTOS可管理的最高优先级相同)
NVIC_SetPriority(USART1_IRQn, 5);void USART1_IRQHandler(void) {// 进行接收处理BaseType_t xHigherPriorityTaskWoken = pdFALSE;xQueueSendFromISR(xRxQueue, &cRxChar, &xHigherPriorityTaskWoken);// 若有必要,进行任务切换portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}

禁止调用API的高优先级中断

系统关键中断,例如滴答定时器(SysTick),其优先级数值要设置为<5,并且在中断服务函数中不能调用FreeRTOS API。示例如下:

// 配置SysTick优先级为1(高优先级,不可被FreeRTOS屏蔽)
NVIC_SetPriority(SysTick_IRQn, 1);void SysTick_Handler(void) {// 执行关键操作,禁止调用FreeRTOS APItimer_update();
}

本文到此结束,不知道您看到这里是否可以回答开头的问题?如果有帮助到您,欢迎点赞、收藏、转发!

http://www.yayakq.cn/news/731672/

相关文章:

  • 各大网站图片做写手一般上什么网站好
  • 微信网站结构怎样用dede搭建网站
  • html5网站价格深圳市南山区住房和建设局网站官网
  • 做网站赌钱犯法吗网站建设与管理的通知
  • 京东网站建设流程图百度推广登录入口下载
  • 网站是用什么技术做的wordpress动画插件下载地址
  • 婚纱摄影网站seo方案合肥地区建网站公司
  • 视频网站备案北京千锋教育
  • 网站域名空间怎么提交国内电商企业有哪些
  • 题库网站开发百度网站建设技术
  • 茂名住房和城乡建设部网站西安网站设计
  • 自己做百度网站刚刚中国宣布重大消息
  • 网站怎么收录到百度建网站找哪里
  • 域名购买之后怎么做网站做盗版电影网站赚钱
  • 做垂直网站百度极速版下载安装最新版
  • 响应式网站设计优点广州市提取住房补贴建设银行网站
  • 网站建设与管理 自考关闭网站跳转代码
  • 成都网站建设详细内容网站备案 快递
  • 织梦怎么设置网站首页公司黄页网
  • 东莞浩智网站建设开发叮当小程序制作平台
  • 做影视网站难吗数据库导入wordpress
  • 网站建设功能需求文档平台网站模板素材图片
  • 二级网站建设 知乎常见的网络营销推广方法有哪些
  • 个人网站命名 备案网页微信看朋友圈
  • 网站的详情页面seo关键词排名优化软件怎么选
  • 做游戏开箱网站的法律风险wordpress 目录配置文件
  • 做外贸网站可以收付款吗中国电信企业邮箱21cn
  • 阿里云企业网站建设教程同一人可以做几个网站的负责人
  • 个人网站怎样做超链接如何做网站链接分享朋友圈
  • 纯html网站企业单页网站模板