完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 moyanming2013 于 2017-1-18 12:27 编辑
count如果是uint8,其值最大是255,那么永远也出不来for循环。 然后,tempaddr就会越位了。越位后访问了不该访问的地址,进而产生HardFault异常。 |
|
|
|
7762642422d 发表于 2018-11-27 20:17 是UINT32_T |
|
|
|
你这个是什么核心的,如果是Cortex-M3及以上,可以查看SCB->CFSR, SCB->HFSR, SCB->MMFAR, SCB->BFAR这几个寄存器来确定出错的原因。如果是Cortex-M0,那么查看一下反汇编,看看执行的是什么指令。
|
|
|
|
需要限定 tempaddr 的取值范围,否则可能 读取 不存在/或者 其它异常的地址,导致错误发生
|
|
|
|
60user58 发表于 2018-11-27 20:43 STM32F051 M0内核的 |
|
|
|
地址在上层函数中已经限定,这个子函数只管编程1Kb的内部flash,基本流程是先看看这1K的空间是否被写过,没写过直接编程,写过就先擦除再编程 |
|
|
|
内部flash能这样直接读?不考虑总线时间吗?! 你可以一次性的读到一个内存中,然后在内存中再判断。 |
|
|
|
太占内存了,数据很大的,1024个字节 |
|
|
|
5616asaqwq 发表于 2018-11-27 21:17 |
|
|
|
|
|
是不是地址访问的问题? 如果 tempaddr 如果不能被4整除,还强制uint32_t*访问的话会出硬件异常。
|
|
|
|
是不是地址访问的问题? 如果 tempaddr 如果不能被4整除,还强制uint32_t*访问的话会出硬件异常。
|
|
|
|
正解,果然是这样 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1129 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1075 浏览 2 评论
2175 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1269 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1693 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 08:51 , Processed in 0.712388 second(s), Total 70, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号