OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 212|回复: 3

ucosII,任务切换函数中R0,R1,R4,R5

[复制链接]

  离线 

5

主题

163

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1979
金钱
1979
注册时间
2015-12-27
在线时间
357 小时
发表于 2018-1-12 14:16:40 | 显示全部楼层 |阅读模式
正点原子公众号
今天再看原子的ucosII的代码,任务切换函数中
[C] 纯文本查看 复制代码
OSCtxSw
    PUSH    {R4, R5}
    LDR     R4, =NVIC_INT_CTRL  	;触发PendSV异常 (causes context switch)
   LDR     R5, =NVIC_PENDSVSET
   STR     R5, [R4]
   POP     {R4, R5}
   BX      LR



这里为什么要用R4,R5,为什么不用R0,R1,这样不是就不需要用push和pop了吗?
是有什么考虑吗?
回复

使用道具 举报

  离线 

55

主题

6050

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
11768
金钱
11768
注册时间
2013-11-13
在线时间
1290 小时
发表于 2018-1-12 14:49:56 | 显示全部楼层
首先这是UCOS官方写的,另外至于为什么用R4,R5不用R0,R1。看一下前面的代码里面又没用R0和R1保存东西,有的话肯定不能用R0,R1,没有的话你可以自己去修改代码检查一下。
回复 支持 反对

使用道具 举报

  离线 

5

主题

163

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1979
金钱
1979
注册时间
2015-12-27
在线时间
357 小时
 楼主| 发表于 2018-1-12 14:59:13 | 显示全部楼层
zuozhongkai 发表于 2018-1-12 14:49
首先这是UCOS官方写的,另外至于为什么用R4,R5不用R0,R1。看一下前面的代码里面又没用R0和R1保存东西,有的 ...

OK,谢谢。
回复 支持 反对

使用道具 举报

  在线 

22

主题

1496

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3395
金钱
3395
注册时间
2016-5-29
在线时间
502 小时
发表于 2018-1-12 15:22:09 | 显示全部楼层
本帖最后由 操作系统 于 2018-1-12 15:23 编辑

删除PUSH,POP改为R0,R1,尝试一下,不就知道了.我自己的OS就是这样子切换的.没有毛病.
OSCtxSw
    LDR     R0, =NVIC_INT_CTRL                                  ; Trigger the PendSV exception (causes context switch)
    LDR     R1, =NVIC_PENDSVSET
    STR     R1, [R0]
    BX      LR


深圳富美莱怡家智能科技有限公司
主营:可视对讲,智能家居安防,灯光控制,空调控制
智能门窗,门锁.
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-22 16:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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