FreeRtos里的几个中断屏蔽

1、primask 寄存器

PRIMASK用于禁止除NMI和HardFalut外的所有异常和中断,使用方法:

cpsid i	; //设置primask (禁止中断)
cpsie i ;  //清除primask  (使能中断)

也可以

movs r0,#1
msr primask r0;   //将 1写入primask禁止所有中断


movs r0,#0
mar primask r0  //将0写入primask使能中断

2、faultmask寄存器

faultmask寄存器连HardFault都可以屏蔽掉,使用方法和primask类似:

cpsid f	; //设置faultmask (禁止中断)
cpsie f ;  //清除faultmask  (使能中断)

或者:

movs r0,#1
msr faultmask r0;   //将 1写入fault mask禁止所有中断


movs r0,#0
mar faultmask r0  //将0写入faultmask使能中断

3、basepri寄存器

 basepri寄存器的做法更细腻,可以屏蔽优先级低于某个阈值的中断(中断优先级号越低代表的优先级越高),例如:要屏蔽优先级不高于0x60的中断:

mov r0,#0x60
msr basepri, r0

取消对中断的屏蔽,可以直接将basepri清零

mov r0,#0
mar basepri,r0

FreeRtos的开关中断就是通过basepri寄存器实现的

例如: portDISABLE_INTERRUPTS()

 在这个中断里面打了个断点,debug了一下,当前系统中configMAX_SYSCALL_INTERRUPT_PRIORITY是0x10

然后portENABLE_INTERRUPTS()开中断

debug了一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FreeRTOS中,定时器中断被称为滴答中断。滴答中断是一个周期性中断,用于在每个时间切片结束时执行任务切换。滴答中断的频率由configTICK_RATE_HZ编译时间配置常量设置,该常量定义在FreeRTOSConfig.h文件中。例如,如果configTICK_RATE_HZ被设置为100 (Hz),那么时间片将是10毫秒。如果configTICK_RATE_HZ被设置为1000 (Hz),那么时间片将是1毫秒。滴答中断的处理函数是SysTick_Handler,它会检查调度器的状态并执行任务切换。当当前执行的任务进入Blocked状态,或者当中断将一个高优先级的任务移到Ready状态时,调度器也会选择一个新任务来立即运行。因此,滴答中断FreeRTOS中起到了调度任务的作用。\[2\]\[3\] #### 引用[.reference_title] - *1* [FreeRTOS 定时器、中断、内存、CPU](https://blog.csdn.net/WANGYONGZIXUE/article/details/121755233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [FreeRTOS周期性中断,称为“滴答中断”](https://blog.csdn.net/weixin_46736374/article/details/128254497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KiranWang

一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值