lvpeng-1619958 发表于 2018-4-27 17:32:58

是否可以不用pendSV中断做任务切换?

freeRTOS的任务切换我的理解是:通过SysTick中断去触发pendSV中断去做任务切换,因为pendSV中断优先级最低,所以任务切换只会发生在没有中断的时候产生。那是不是也可以不用pendSV做任务切换,只要用systick中断去随便触发一个优先级最低的中断也可以做任务切换?

Serval 发表于 2018-6-2 12:57:57

理论上是可以的。可以选用一个普通的IRQ,将其配置成最低的中断优先级,通过NVIC_SetPendingIRQ()触发。
同理,SysTick也可以用一个HW Timer去实现。
但这两个中断完成的事情是如此基本和必须,所以就设计成专用的系统异常了。好处是可以提高系统的可移植性。

anobodykey 发表于 2018-4-28 09:58:37

这是个好问题,可以探讨一下,坐等OS大神来答疑解惑,个人愚见是可行的,

lvpeng-1619958 发表于 2018-5-2 09:58:50

有没有大佬解答一下这个问题啊?

lvpeng-1619958 发表于 2018-5-2 10:00:04

是否可以直接用system tick中断去软件触发一个最低优先级的中断去做任务切换呢?

xmshao 发表于 2018-5-4 17:47:33

我认为 做任务切换并没规定一定用谁,只是在OS里,正如你提到的用它比较合适而已。

wolfgang2015 发表于 2018-5-4 18:40:35

万一有其他应用使用了pendSV ,不是就容易让OS被劫持?

xiaojie0513 发表于 2018-5-30 10:23:14

我觉得freertos用pendsv做任务切换也是有一定理由的,假设你用其他中断做任务切换,在同一个时间产生中断,那比他优先级低的任务岂不是永远无法执行了?

andeyqi 发表于 2018-5-30 11:14:39

本帖最后由 andeyqi 于 2018-5-30 11:33 编辑

可以的,完全可以使用SysTick 来系统调度,pendsv会有自身的优势,ST增加pendsv就是给操作系统准备的。pendsv 能解决某中断源的频率和 SysTick 异常的频率比较接近时,会发生“共振”的问题。图片是从Cortex M3权威指南(中文).pdf 截取的关于这段的描述。

xiaojie0513 发表于 2018-5-30 15:50:25

andeyqi 发表于 2018-5-30 11:14
可以的,完全可以使用SysTick 来系统调度,pendsv会有自身的优势,ST增加pendsv就是给操作系统准备的。pend ...

使用还是用rtos推荐的比较好
页: [1] 2
查看完整版本: 是否可以不用pendSV中断做任务切换?