完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
UCOS在任务切换时,R0~R3时由系统自动保存的,而R4-R11是手动保存的,很困惑:系统自动保存的R0~R3放在哪里? 是放在每个任务堆栈中吗? 在ucos iii源码哪个地方能看出来?
在PendSV_Handler中有两行代码: SUBS R0, R0, #0x20 STM R0, {R4-R11} 这里只是把堆栈指针给偏移了8个字而已,没看出来系统会把R0~R3等自动保存在这里啊 |
|
相关推荐
3个回答
|
|
是的,R0~R3自动入栈,都是压入当前任务的任务堆栈中,每个任务使用的堆栈指针都是PSP,中断中使用的是MSP,同过更改PSP的值来完成任务切换
|
|
|
|
CM3内核中在中断发生的时候系统自动将其中的8个寄存器入栈,偏移八个字是将R4~R11入栈,R0~R3放在对应的任务堆栈中。
|
|
|
|
“R0~R3放在对应的任务堆栈中” ,这个R0~R3是在CPU进入PendSV异常前自动入栈的吗?入栈的地址也是由PSP指向的,每个任务使用的堆栈指针都是PSP吗? 感谢解答!
|
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1073浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 07:47 , Processed in 1.055951 second(s), Total 52, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号