很久很久没有记录过debug了,今天有空就正好记录一下
嵌入式开发,stm32F407的MCU的开发板。
遇到如下问题:
变量的地址竟然为奇数!!!导致程序运行到写入该地址的数据时,发生HardFault!

程序运行到断点位置就会进入hardFault,如图所示

师傅告诉我:这个地址是奇数有问题啊!要注意字节对齐!!!
STM32出现硬件错误可能有以下原因:
(1)数组越界操作;
(2)内存溢出,访问越界;
(3)堆栈溢出,程序跑飞;
(4)中断处理错误;
首先疑问,为什么指针是奇数的操作(例如复制之类的),一操作就会HardFault呢?
参考链接:

本文探讨了在STM32F407开发中遇到的奇数地址引发的HardFault问题,涉及字节对齐的重要性。作者通过实例和理论分析,解释了ARM对奇数地址访问的限制,并分享了解决方法——调整结构体对齐。
最低0.47元/天 解锁文章
438





