OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4838|回复: 0

stm32移植μc/os时,任务级切换和中断级切换的困惑,希望各位高手帮帮忙

[复制链接]

29

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2013-8-4
在线时间
0 小时
发表于 2013-9-29 20:15:08 | 显示全部楼层 |阅读模式
 移植μc/os时,任务级切换函数即OSCtrSw,中断级任务切换函数为OSIntCtrSw,两者的功能都是设置PendSV中断,从而在PendSV中断服务程序中真正实现任务的切换。而PendSV中断服务程序的过程就是先保存CPU的R4-R11寄存器,之后再出栈即将运行的任务的R4-R11,从而实现任务切换。那么这两个任务切换函数过程不是一样的???为什么书上说OSIntCtrSw()由于之前已经发生过中断,故CPU的寄存器已经保存入栈,只需要出栈即将运行任务的R4-R11即可??OSIntCtrSw和OSCtrSw进入的是同一个PendSV中断服务函数,为什么OSCtrSw时进入PendSV服务程序得先保存R4-R11,而OSIntCtrSw可以省略这一步?因为他们进入的是同一个PendSV服务程序,那么它们俩按照程序的一条一条执行不都是先应该保存R4-R11吗??难道是当OSIntCtrSw时,执行PendSV服务程序会可以跳过保存R4-R11这个步骤,而只执行出栈即将运行任务的R4-R11这个程序段???

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 03:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表