stm32增加bootloader后进不了中断

加bootloader前能进,加了后进不了,但是主程序不崩正常跑

可能是bootloader里跳转前把中断关掉了。
即在bootloader里这样设置过:

__set_PRIMASK(1);

则需要在应用层里添加:

__set_PRIMASK(0);

重新把中断打开

加bootloader前能进,加了后程序崩到HardFault里

可能这句没加

SCB->VTOR = 0x08010000;

或者是C++工程没有用extern "C"把中断函数包起来

加了bootloader后程序乱跑,debug时JLink还会报错。

JLink报

**JLink Warning: T-bit of XPSR is 0 but should be 1. Changed to 1.

可能是由于改了芯片类型,Project - Option for Target - Target 下边的IROM 起始地址恢复到0x08000000了。

总结

加bootloader注意3点:
1. 改SCB->VTOR
2. 改IROM起始地址
3. 开全局总中断

你可能感兴趣的:(硬件调试,单片机)