OpenEdv-开源电子网

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

对于ucosii os_cpu_a.asm中几行程序的不解

[复制链接]

24

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2012-3-21
在线时间
17 小时
发表于 2013-1-23 13:58:04 | 显示全部楼层 |阅读模式

原子哥的程序:
NVIC_INT_CTRL    EQU     0xE000ED04  ; 中断控制寄存器
NVIC_SYSPRI2     EQU     0xE000ED20  ; 系统优先级寄存器(2)
NVIC_PENDSV_PRI  EQU     0xFFFF0000  ; PendSV中断和系统节拍中断
                                        ; (都为最低,0xff).
NVIC_PENDSVSET   EQU     0x10000000  ; 触发软件中断的值.

;启动最高优先级任务
OSStartHighRdy
        LDR     R4, =NVIC_SYSPRI2      ; set the PendSV exception priority
        LDR     R5, =NVIC_PENDSV_PRI
        STR     R5, [R4]
-----------------------------------------------------------------------------------------------------
官方下载的版本:
NVIC_INT_CTRL   EQU     0xE000ED04                              ; Interrupt control state register.
NVIC_SYSPRI14   EQU     0xE000ED22                              ; System priority register (priority 14).
NVIC_PENDSV_PRI EQU           0xFF                              ; PendSV priority value (lowest).
NVIC_PENDSVSET  EQU     0x10000000                              ; Value to trigger PendSV exception.
...
;启动最高优先级任务
SStartHighRdy
    LDR     R0, =NVIC_SYSPRI14                                  ; Set the PendSV exception priority
    LDR     R1, =NVIC_PENDSV_PRI
    STRB    R1, [R0]


--------------------
权威指南查得原子哥中 NVIC_SYSPRI2 为调试监视器的优先级
官方下载下来的版本中 NVIC_SYSPRI2 为PendSV的优先级   
能解释一下这两部分的不同吗?

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-23 17:17:24 | 显示全部楼层
回复【楼主位】daiqh:
---------------------------------
应该是我的代码有问题.
你的 0xE000ED22才是对的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2012-12-29
在线时间
15 小时
发表于 2015-5-11 09:47:27 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥的代码是正确的,原子哥的优先级是按字操作的,0xE000ED20~0xE000ED23地址代表一个字,往里面写0xFFFF0000就是设置PendSV中断和系统节拍中断的优先级均为0xFF,官网的是按字节操作的,效果都一样。
踏实每一天!
回复 支持 反对

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2015-5-11 10:33:44 | 显示全部楼层
2楼正解,小端模式。区别是,前部分代码设置了2个优先级。
另外,名称与实际有出入,应该为SHPR[3]。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 14:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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