OpenEdv-开源电子网

标题: FreeRTOS中PENDSV和Systick中断优先级设置问题 [打印本页]

作者: 玉敏    时间: 2020-4-13 08:33
标题: FreeRTOS中PENDSV和Systick中断优先级设置问题
FreeRTOS中PENDSV和Systick中断优先级设置时 把他们两个都设置成了最低优先级。但是不明白为什么要设置为最低?



作者: peng1554    时间: 2020-4-13 08:33
PENDSV和Systick中断设置的优先级比较高的话,容易频繁进这两的中断服务函数
进而影响其他任务的运行
作者: ultraelec    时间: 2020-4-13 16:27
本帖最后由 ultraelec 于 2020-4-13 16:34 编辑

楼上说的不对。

Cortex-M的MCU支持中断嵌套,所以高优先级中断会 打断 低优先级中断。
SysTick会周期性执行,PendSV在SysTick中或者其它API会挂起执行。把他们优先级设置为最低,就是要禁止它们打断任何其它中断的执行,保证其它中断能够迅速得到响应。

作者: 玉敏    时间: 2020-4-14 11:52
ultraelec 发表于 2020-4-13 16:27
楼上说的不对。

Cortex-M的MCU支持中断嵌套,所以高优先级中断会 打断 低优先级中断。

1.当处理任务B的时候,有一个中断产生,这时会处理中断服务函数。
2.但是在ISR执行过程中发生了一个systick异常,
问题:因为systick的优先级是最低的  ,他怎么会抢占之前中断呢?
作者: ultraelec    时间: 2020-4-14 11:57
玉敏 发表于 2020-4-14 11:52
1.当处理任务B的时候,有一个中断产生,这时会处理中断服务函数。
2.但是在ISR执行过程中发生了一个syst ...

你自问自答吗?你不是在问为什么设置最低吗!
就是为了不让它抢占别的中断啊,所以才设置最低
作者: ultraelec    时间: 2020-4-14 12:11
玉敏 发表于 2020-4-14 11:52
1.当处理任务B的时候,有一个中断产生,这时会处理中断服务函数。
2.但是在ISR执行过程中发生了一个syst ...

你问为啥设置最低:
我回答是为了不让它打断其它中断,有问题吗?

你又问:因为systick的优先级是最低的  ,他怎么会抢占之前中断呢?
有人说最低优先级会抢占之别人的中断了吗?

有点逻辑好不好?

作者: ISO14882    时间: 2020-4-15 09:20
SysTick的这个中断一般用来实现RR调度,pend supervisor call 可以拿来实现系统调用(可挂起),在RTOS中一般用来告知调度器进行调度。至于为什么这两个中断的优先级如此低,就是要配合RTOS这种应用场景
作者: 思维逆逝    时间: 2020-4-22 21:47
MK~~~~~~~~~~~~~~~~~




欢迎光临 OpenEdv-开源电子网 (http://openedv.com/) Powered by Discuz! X3.4