SCB->SHCSR |= 0x00070000;
// enable Usage Fault, Bus Fault, and MMU Fault
总线错误:
(1)当代码开始运行时,在Flash初始化之前如果对其擦写,会出现,
(2)如果在Flash 初始化过程中配置板子的时钟,会出现代码跑飞情况;比如一般配置时钟都是在flash_init函数之前,如果 flash_init函数中又出现配置时钟函数,那么在第二次配置完时钟后PC指针返回错误导致跑飞,
还有一种简单的,如删除存代码段的flash地址,也会出现跑飞情况
存储器管理错误:
(1)首先看map文件,我们生成的代码大小是否超过链接文件定义的地址大小,
(2)最有可能是栈分配问题,检查map文件中的数组,变量是否超过栈地址分配大小,数组越界可能性很小,较大已初始化数组建议声明为const类型
【IAR|HardFault 一般解决方法】