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

做网站什么商品好网站怎么做文本跳出来

做网站什么商品好,网站怎么做文本跳出来,网站数据库迁移,昆明网站建设哪家比较好FreeRTOS学习(九):中断管理 文章目录 FreeRTOS学习(九):中断管理前言一、中断优先级分组设置特点中断优先级分组设置 二、FreeRTOS中断优先级配置PendSV和SysTick中断优先级配置 三、中断相关寄存器PRIMASK…

FreeRTOS学习(九):中断管理


文章目录

  • FreeRTOS学习(九):中断管理
  • 前言
  • 一、中断优先级分组设置
    • 特点
    • 中断优先级分组设置
  • 二、FreeRTOS中断优先级配置
    • PendSV和SysTick中断优先级配置
  • 三、中断相关寄存器
    • PRIMASK
    • FAULTMASK
    • BASEPRI(本实验用)
  • 实验代码
    • 定时器中断配置:
    • 中断优先级设置:
    • FreeRTOS任务与中断交互:
      • 中断恢复过程
  • 总结


前言

本章节带大家来先回顾中断的相关知识,然后根据中断来做实验


一、中断优先级分组设置

特点

  1. 低于configMAX_SYSCALL_INTERRUPT_PRIORITY优先级的中断里才允许调用FreeRTOS的API函数
  2. 建议将所有优先级位指定为抢占优先级位,方便FreeRTOS管理
  3. 中断优先级数值越小越优先任务优先级数值越大越优先

中断优先级分组设置

FreeRTOS中有5种分配方式,对应着中断优先级分组的5个组:

优先级分组抢占优先级子优先级优先级配置寄存器高4位
NVIC_PriorityGroup_00级抢占优先级0-15级子优先级0bit用于抢占优先级,4bit用于子优先级
NVIC_PriorityGroup_10-1级抢占优先级0-7子优先级1bit用于抢占优先级,3bit用于子优先级
NVIC_PriorityGroup_20-3级抢占优先级0-3子优先级2bit用于抢占优先级,2bit用于子优先级
NVIC_PriorityGroup_30-7级抢占优先级0-1子优先级3bit用于抢占优先级,1bit用于子优先级
NVIC_PriorityGroup_40-15级抢占优先级0级子优先级4bit用于抢占优先级,0bit用于子优先级

一般在FreeRTOS中使用HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)函数设置优先级分组。
就是表格的最后一组

二、FreeRTOS中断优先级配置

FreeRTOS中对于中断优先级的配置主要基于以下几个关键定义:

/* 中断嵌套行为配置 */
#ifdef NVIC_PRIO_BITS#define configPRIO_BITS NVIC_PRIO_BITS
#else#define configPRIO_BITS 4
#endif/* 中断最低优先级 */
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY    15  /* 中断最低优先级 */
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    5  /* 可以调用FreeRTOS核心API的最高中断优先级 */
#define configKERNEL_INTERRUPT_PRIORITY           (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
#define configMAX_SYSCALL_INTERRUPT_PRIORITY      (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
#define configMAX_API_CALL_INTERRUPT_PRIORITY     configMAX_SYSCALL_INTERRUPT_PRIORITY

PendSV和SysTick中断优先级配置

在这里插入图片描述
左移4位的原因是因为低4位用不到,NVIC优先级寄存器只使用高4位。

三、中断相关寄存器

FreeRTOS中有三个重要的中断屏蔽寄存器,分别是:

PRIMASK

  • 这是一个只有1个位的寄存器
  • 当它置1时,关掉所有可屏蔽的异常,只剩下NMI和硬fault可以响应
  • 它的缺省值是0,表示没有关中断

FAULTMASK

  • 这也是一个只有1个位的寄存器
  • 当它置1时,只有NMI才能响应,所有其它的异常(包括中断和fault)通通闭嘴
  • 它的缺省值也是0,表示没有关异常

BASEPRI(本实验用)

  • 这个寄存器最多有9位(由表达优先级的位数决定)
  • 它定义了被屏蔽优先级的阈值
  • 当它被设成某个值后,所有优先级号大于等于此值的中断都被关(优先级号越大,优先级越低)
  • 但若被设成0,则不关闭任何中断,0也是缺省值

实验代码

定时器中断配置:

TIM3和TIM5都被配置为基本定时器,时钟频率为72MHz
两个定时器都使用相同的计数参数:

btim_tim3_int_init(10000-1, 7200-1);
btim_tim5_int_init(10000-1, 7200-1);

根据定时器计算公式:Tout = ((arr + 1) * (psc + 1)) / Ft
定时时间 = ((10000) * (7200)) / 72000000 = 1秒

中断优先级设置:

TIM3的中断优先级:抢占优先级4,子优先级0

HAL_NVIC_SetPriority(BTIM_TIM3_INT_IRQn, 4, 0);

TIM5的中断优先级:抢占优先级6,子优先级0

HAL_NVIC_SetPriority(BTIM_TIM5_INT_IRQn, 6, 0);

TIM3的优先级高于TIM5

FreeRTOS任务与中断交互:

在task1中,每5次循环会执行一次中断控制:

if (++task1_num == 5)
{ task1_num=0;printf("FreeRTOS关闭中断\r\n");portDISABLE_INTERRUPTS();       /* FreeRTOS关闭中断 */delay_ms(5000);                 /* 延时5秒 */printf("FreeRTOS打开中断\r\n");portENABLE_INTERRUPTS();        /* FreeRTOS打开中断 */
}

当中断被关闭时,TIM5定时器的中断会被屏蔽5秒钟
但是TIM3是不会被影响的

现象:
在这里插入图片描述
这是为什么呢
FreeRTOS中的portDISABLE_INTERRUPTS()不是真正地关闭所有中断,而是使用BASEPRI机制:
在portmacro.h中

static portFORCE_INLINE void vPortRaiseBASEPRI(void)
{uint32_t ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;__asm{msr basepri, ulNewBASEPRIdsbisb}
}

这段代码的作用是:

将configMAX_SYSCALL_INTERRUPT_PRIORITY值写入BASEPRI寄存器
执行DSB (数据同步屏障)和ISB (指令同步屏障)确保内存操作完成
而在配置文件中
在这里插入图片描述

  • configMAX_SYSCALL_INTERRUPT_PRIORITY设置为5

  • TIM3优先级设置为4

  • TIM5优先级设置为6
    优先级号越大,优先级越低
    当执行portDISABLE_INTERRUPTS()时:

  • TIM3中断继续工作,因为其优先级(4)高于阈值(5)

  • TIM5中断被屏蔽,因为其优先级(6)低于阈值(5)

中断恢复过程

当执行portENABLE_INTERRUPTS()时,通常会执行类似下面的操作:

static portFORCE_INLINE void vPortSetBASEPRI(uint32_t ulBASEPRI)
{__asm{msr basepri, ulBASEPRI}
}

通常会将BASEPRI重置为0,这样所有优先级的中断都会重新启用。


总结

FreeRTOS的"中断关闭"实际上是一种优先级阈值机制,而不是真正意义上的全部中断关闭。这种设计允许关键的高优先级中断(如TIM3)即使在临界区内也能执行,同时阻止低优先级中断(如TIM5)干扰系统的关键代码执行,这是RTOS实时特性的重要保障。

http://www.dtcms.com/wzjs/557868.html

相关文章:

  • 网站搭建说明购物网站代码
  • 网站免费在线观看网站分页代码
  • 镇江网站建设介绍龙川网站建设
  • 揭阳市榕城区建设局网站深圳注册公司补贴政策
  • 了解做房产广告的网站河间网站建
  • 电子商务网站建设与管理课程的目的重庆开网站
  • 深圳网站建设qwyx100wordpress 转换app
  • 彩票网站建设制作网页设计代码网站
  • 为什么只有我的电脑看网站后台内容管理是乱码百度搜索大数据查询
  • 西安网站建设网房地产市场包括
  • 网站页面策划湖南自考网站建设与管理
  • 域名注销期间网站还能打开吗做网站工作条件
  • 访问国外网站很慢电子商务网站建设 以为例
  • 桂林网站建设桂林网站建立
  • 海尔建设此网站的目的是什么意思在凡科网申请的网站设置网页访问密码
  • 网站要懂代码推广渠道
  • 网站建设公司dyfwzx小说网站怎么做不违法
  • 如何建双注册网站网站开发工程师学什么区别
  • wordpress双语站seo关键字怎么优化
  • 网站开发与设计实验报告网站建设应当注意
  • 前端手机网站wordpress导入演示卡主
  • 江门网站程序开发制作网站分享代码怎么加
  • 网站建设的前端开发和后端开发alexa排名分析
  • 做ic用什么网站网站建设办法
  • 苏州网站建设设计张家港外贸网站建设
  • 烟台网站制作效果企业网站推广方式和策略
  • 昆明网站推广价格360推广开户
  • 淘客网站怎么做返利网站开发技术应用领域
  • 如何修改网站源文件中国最大的博客网站
  • 平台企业采用劳务派遣方式用工的网站建设 猫云seo