[APM32E0] 在使用模拟EEPROM的时候时常hardfault

[复制链接]
605|34
寂静小夜曲 发表于 2025-10-31 18:18 | 显示全部楼层 |阅读模式
利用flash的最后一页空间做为EEPROM使用。参考了官方示例,发现偶发hardfault。
大家有遇到类似的问题吗?如何解决的?

神秘低语 发表于 2025-11-1 20:42 | 显示全部楼层
模拟EEPROM需要先擦除再编程。
否则就报错
天鹅绒星星 发表于 2025-11-2 17:36 | 显示全部楼层
楼主,需要先关闭中断。
否则,中断触发后会直接进入口函数,而这里flash处于busy状态。
观星者宁静 发表于 2025-11-3 11:29 | 显示全部楼层
对比官方的例程。我按照官方的例程实现没有任何问题。
转瞬回声 发表于 2025-11-3 19:11 | 显示全部楼层
如果跑官方的例程会出现宕机吗?
Gfan 发表于 2025-11-4 11:35 | 显示全部楼层
转瞬回声 发表于 2025-11-3 19:11
如果跑官方的例程会出现宕机吗?

[em:25:]按一万个理来说,是不会宕机,官方例程还宕机那有点不得了
jtracy3 发表于 2025-11-5 09:52 | 显示全部楼层
增加超时和错误处理              
涡流远见者 发表于 2025-11-5 10:27 | 显示全部楼层
没有关闭中断。
或者结束的时候是不是没有关闭flash的编程功能?
timfordlare 发表于 2025-11-5 11:35 | 显示全部楼层
动态数据结构、大对象需堆分配,但需严格管理生命周期。
jackcat 发表于 2025-11-5 14:16 | 显示全部楼层
使用互斥锁或临界区保护Flash操作
benjaminka 发表于 2025-11-5 16:33 | 显示全部楼层
MCU需先解锁Flash控制寄存器才能操作,完成后及时锁定以防止误写
亿年回响 发表于 2025-11-5 16:58 | 显示全部楼层
我也觉得楼主是结束后未锁定flash的编程。
i1mcu 发表于 2025-11-5 18:07 | 显示全部楼层
Flash操作需要先擦除再写入,如果顺序错误或操作不完整,可能会导致HardFault。
claretttt 发表于 2025-11-5 20:08 | 显示全部楼层
栈分配更高效、安全,但受大小限制。
olivem55arlowe 发表于 2025-11-5 22:08 | 显示全部楼层
地址计算是否正确,是否会对齐,是否会越界?
kkzz 发表于 2025-11-6 20:41 | 显示全部楼层
中断服务程序本身不访问Flash,只要它的代码在正在被操作的Flash Bank上,就会导致崩溃。
updownq 发表于 2025-11-7 16:24 | 显示全部楼层
Flash未解锁              
beacherblack 发表于 2025-11-8 13:35 | 显示全部楼层
如果栈空间不足,可能会导致内存越界, 引发HardFault。
lzmm 发表于 2025-11-9 10:01 | 显示全部楼层
数据缓冲区起始地址为4的倍数。              
benjaminka 发表于 2025-11-9 12:12 | 显示全部楼层
等待循环是否有超时机制?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

36

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0