大家好:
如题,在bootloader程序跳转前,调用了标准固件库函数 IntMasterDisable() 禁止了中断。
芯片手册上也说复位中断是不会受影响的。
按照我的理解,程序指针应该会跳转到复位中断服务程序的入口地址执行,但实际仿真时会进入硬件故障中断服务程序。
我想知道为什么...
阿里嘎多米娜桑!
ps:不禁止中断是能够正常跳转的
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好:
如题,在bootloader程序跳转前,调用了标准固件库函数 IntMasterDisable() 禁止了中断。
芯片手册上也说复位中断是不会受影响的。
按照我的理解,程序指针应该会跳转到复位中断服务程序的入口地址执行,但实际仿真时会进入硬件故障中断服务程序。
我想知道为什么...
阿里嘎多米娜桑!
ps:不禁止中断是能够正常跳转的
函数原型是这个
#if defined(ccs)
uint32_t
CPUcpsid(void)
{
//
// Read PRIMASK and disable interrupts.
//
__asm(" mrs r0, PRIMASK\n"
" cpsid i\n"
" bx lr\n");
//
// The following keeps the compiler happy, because it wants to see a
// return value from this function. It will generate code to return
// a zero. However, the real return is the "bx lr" above, so the
// return(0) is never executed and the function returns with the value
// you expect in R0.
//
return(0);
}
你实际测试下,不要仿真,看看实际芯片运行也会进故障中断吗?