海迹天涯 发表于 2017-1-20 08:46:08

Dylan疾风闪电 发表于 2017-1-19 19:24
参考这样写:

我试试看

迷雾向前 发表于 2017-1-20 11:29:13

是不是地址访问的问题? 如果 tempaddr 如果不能被4整除,还强制uint32_t*访问的话会出硬件异常。

迷雾向前 发表于 2017-1-20 11:30:08

是不是地址访问的问题? 如果 tempaddr 如果不能被4整除,还强制uint32_t*访问的话会出硬件异常。

海迹天涯 发表于 2017-1-20 13:34:16

迷雾向前 发表于 2017-1-20 11:30
是不是地址访问的问题? 如果 tempaddr 如果不能被4整除,还强制uint32_t*访问的话会出硬件异常。 ...

正解,果然是这样

shuolang126 发表于 2017-1-21 08:33:41

tempaddr变量的数值有问题吗?如果读取的数据时程序代码本身所处的位置,就会触发错误。
使用指针读取内容,不是任何位置都可以读取的

wildeer 发表于 2019-5-19 10:17:16

zoomdy 发表于 2017-1-18 12:43
你这个是什么核心的,如果是Cortex-M3及以上,可以查看SCB->CFSR, SCB->HFSR, SCB->MMFAR, SCB->BFAR这几个 ...

Cortex-M3的,怎么分析这几个寄存器?截图如楼下

edmundlee 发表于 2019-5-19 11:22:42

答案显然是tempaddr的值是非法, 不是对齐问题就是越界问题,
如果tempaddr是局部变量就暂时把它改为全局的, 在进 HardFault_Handler后查看tempaddr就知道问题在哪儿了

stm1024 发表于 2019-5-19 13:15:58

flash是不是只能按半字(16Bit)读取啊?换成uint16_t*试试?
页: 1 [2]
查看完整版本: 操作内部FLASH导致进入HardFault