本帖最后由 mildlioncn 于 2009-8-8 09:07 编辑
请教各位大虾。我用LPC2148跑ucosii没有问题,开发环境是keil3。
我在系统里添加了一个实时时钟任务,RTC没有初始化成功。
然后我用仿真器单步运行代码,观察状态。一个奇怪的现象困扰我很久:比如:
YEAR = 2007;
明明给YEAR这个寄存器送2007这条语句执行了,为什么keil3
仿真界面上就没有赋值成功呢,还依然显示0???
后来瞎折腾,仿真到ucosii的关中断这个步骤:
NOINT EQU 0xc0
OSCPUSaveSR
mrs r1,CPSR
orr r0,r1,#NOINT
msr CPSR_c,r0
MRS R1,CPSR
AND R1,R1,#NOINT
CMP R1,#NOINT
BNE OSCPUSaveSR
mov pc,lr
在msr CPSR_c,r0指令执行时,应该是把r0低8位赋给CPSR的低8位,
仿真界面中r0低8位明明显示0xd0,而这条指令执行之后,CPSR的低
8位依然还是原来的0x10,没有改变,没有赋值成功。
很疑惑,不知道为什么?
请教各位大侠。
|