Free RTOS-中断

中断:

让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫做中断。

中断执行机制,分为三步:

  • 中断请求:外设产生中断请求(GPIO外部中断、定时器中断等);
  • 响应中断:CPU停止执行当前程序,转而去执行中断处理程序(ISR);
  • 退出中断:执行完毕,返回被打断的程序处,继续往下执行。

中断优先级分组设置:

中断的优先级使用中断优先级配置寄存器控制,这个寄存器位宽为8位。但是STM32只使用了寄存器的高4位,所以可以提供的最大优先级为16位中断优先级。
STM32的中断优先级可以分为抢占优先级和子优先级。

  • 抢占优先级:抢占优先级高的中断可以打断正在执行但是抢占优先级低的中断;
  • 子优先级:当同时发生具有相同抢占优先级的两个中断时,子优先级数值小的优先执行。
  • 中断优先级的数值越小,优先级越高。

中断优先级的分组:

中断优先级可以分为5组:
在这里插入图片描述
FreeRTOS采用分组4的方式,其设置方式为:在HAL_Init中通过调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)来设置。

中断相关的寄存器:

三个系统中断优先级配置寄存器:

  • SHPR1,地址为:0xE000ED18
  • SHPR2,地址为:0xE000ED1C
  • SHPR3,地址为:0xE000ED20

三个中断屏蔽寄存器

  • PRIMASK
  • FAULTMASK
  • BASEPRI
    在这里插入图片描述
    当BASEPRI设置为0x50时:

在这里插入图片描述
在中断服务函数中调用FreeRTOS的API函数时需要注意:

  • 中断服务函数的优先级须在FreeRTOS所管理的范围内;
  • 在中断服务函数中调用FreeRTOS的API函数时,必须使用带有FromISR后缀的函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值