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.

关于start up 问题



sys_start up

进入到 afterSTC函数中的

crcAtInit_VIMRAM = SL_CRC_Calculate(((uint64 *)0xFFF82000), 256);
// crcAtInit_FEE = SL_CRC_Calculate(((uint64 *)0xF0200000), 8);
crcAtInit_FLASH = SL_CRC_Calculate((uint64 *)((uint32)&ulFlashStartAddr), ((((uint32)&ulFlashEndAddr)-((uint32)&ulFlashStartAddr)) >> 3));
// crcAtInit_StaticRAM = SL_CRC_Calculate((uint64*)static_ram,1); /* enable the below functions only if profiling is ebnabled*/
_enable_interrupt_();
就进入到

#pragma INTERRUPT ( _excpt_vec_udef_instr, UDEF)
void _excpt_vec_udef_instr()
#endif
#ifdef __IAR_SYSTEMS_ICC__
__irq __arm void _excpt_vec_udef_instr()
#endif
{
while(1);

}

循环中

 不知道什么原因

  • 我把这些全都注释掉的话,就可以跑到main函数了

    crcAtInit_VIMRAM = SL_CRC_Calculate(((uint64 *)0xFFF82000), 256);
    // crcAtInit_FEE = SL_CRC_Calculate(((uint64 *)0xF0200000), 8);
    crcAtInit_FLASH = SL_CRC_Calculate((uint64 *)((uint32)&ulFlashStartAddr), ((((uint32)&ulFlashEndAddr)-((uint32)&ulFlashStartAddr)) >> 3));
    // crcAtInit_StaticRAM = SL_CRC_Calculate((uint64*)static_ram,1); /* enable the below functions only if profiling is ebnabled*/
    _enable_interrupt_();

    请问去掉这些的影响,而且这个中断是什么意思
  • whong zhao 说:

    #pragma INTERRUPT ( _excpt_vec_udef_instr, UDEF)
    void _excpt_vec_udef_instr()
    #endif
    #ifdef __IAR_SYSTEMS_ICC__
    __irq __arm void _excpt_vec_udef_instr()
    #endif
    {
    while(1);

    }

    它是UNDEF异常处理程序。MCU在遇到无效指令时进入“未定义模式”。

    您可以添加断点,然后单步执行该函数以查找导致问题的指令。

  • 我把上面的函数都注释掉了,就没有这个问题了,不运行上面的函数会有什么影响
  • 就是MCU在遇到无效指令时不会进入“未定义模式”,因为您注释了中断服务程序

    至于会有什么影响,要结合您的代码来看。但是一般建议您不要注释,而是通过调试来找出进入这个中断的原因