1、用keildebug调试Nano系列MCU时,偶然进入HardFault_Handler中程序死掉了。
原因:
1)界说变量时的类型是char,外部文件调用时声明的是extern int,同一变量界说与外部声明不一致而导致过错。
2)用DMA时,1byte传输,数据手册中要求地址要字对齐,由所以外设与内存之间运用dma,界说的数组在程序中换了界说的方位成果导致数据不正确,debug时还进入HardFault_Handler中,调整数组界说的地址就可以了。
摘录总结:
Cortex-M3/4的Fault反常是因为不合法的存储器拜访(比方拜访0地址、写只读存储方位等)和不合法的程序行为(比方除以0等)等形成的。常见的4种反常及发生反常的状况如下:
Bus Fault:在fetch指令、数据读写、fetch中止向量或中止时存储康复寄存器栈状况下,检测到内存拜访过错则发生Bus Fault。
Memory Management Fault:拜访了内存办理单元(MPU)界说的不合法的内存区域,比方向只读区域写入数据。
Usage Fault:检测到未界说指令或在存取内存时有未对齐。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/258584.html