最近在研究uCOS-III的东西,移植了之后发现了一个问题。进行debug的时候,程序总是进入FaultISR的死循环中。但是直接上电运行的话,程序是能跑起来的,数据也是对的。
后来通过单步加断点的方法,找到了原因。debug的时候,每次执行到一句STR指令的时候,就会进入死循环了。
代码如下:
OSStartHighRdy
LDR R0, =NVIC_SYSPRI14 ; Set the PendSV exception priority
LDR R1, =NVIC_PENDSV_PRI
STRB R1, [R0]
MOVS R0, #0 ; Set the PSP to 0 for initial context switch call
MSR PSP, R0
LDR R0, =NVIC_INT_CTRL ; Trigger the PendSV exception (causes context switch)
LDR R1, =NVIC_PENDSVSET
STR R1, [R0]
CPSIE I ; Enable interrupts at processor level
就是倒数第二行的STR指令。请问各位谁能帮忙分析分析原因,我有点没头绪啊。
此帖出自
小平头技术问答
一周热门 更多>