你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

操作内部FLASH导致进入HardFault

[复制链接]
海迹天涯 提问时间:2017-1-18 11:58 /
阅读主题, 点击返回1楼
收藏 1 评论17 发布时间:2017-1-18 11:58
17个回答
海迹天涯 回答时间:2017-1-20 08:46:08

我试试看
迷雾向前 回答时间:2017-1-20 11:29:13
是不是地址访问的问题? 如果 tempaddr 如果不能被4整除,还强制uint32_t*访问的话会出硬件异常。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

迷雾向前 回答时间: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变量的数值有问题吗?如果读取的数据时程序代码本身所处的位置,就会触发错误。
使用指针读取内容,不是任何位置都可以读取的

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

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*试试?
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版