STM32硬件错误“HardFault_Handler”与RW-Data、RO-Data的联系

如题,如果因为一些偶然的因素,导致开始思考这样的问题,那一定会使人迷惑,如果进而对STM32启动流程、编译链接原理、内存管理、Flash编程、Keil V5的魔术棒设置项等再研究一遍,最终纠缠无果的时候,真是令人烦恼万千……

实际上,此二者没有直接关系!

最后原因真的很大众,就是数组越界操作。

我要说的是,之所以会复杂化这个问题,是因为不是所有的数组越界操作都会导致运行时报错,原因在于如果这个指针指向的值是有效值,程序就会正常运行。

所以就出现了以下两种代码,一个报错一个正常:

1. char VER_ST111R[30] = "V1.0.0.190614fwegsdfasf_DEV";   运行出现HardFault_Handler错误

2. const char VER_ST111R[30] = "V1.0.0.190614fwegsdfasf_DEV";    正常运行

以上表面现象让人联想到RAM空间的分配,这就容易产生很大的误导。

加了const之后,RW-data中的数据就被剔除了一部分,数组越界访问的数值就会出现变化,偶然中规避了错误的发生。

 

参考:

1. 硬件错误的解决

https://blog.csdn.net/electrocrazy/article/details/78173558

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值