硬汉嵌入式论坛

 找回密码
 立即注册
查看: 746|回复: 4
收起左侧

[STM32H7] H7芯片读取0x08060040异常

[复制链接]

13

主题

27

回帖

66

积分

初级会员

积分
66
发表于 2024-5-25 18:08:40 | 显示全部楼层 |阅读模式

我先定义了一个缓存区,然后进行flash擦除,再写入数据;
接着发现读取0x08060040~0x0806005F就会进入HardFault_Handler,请问要怎么修改,为什么会这样
微信图片_20240525180213.png Snipaste_2024-05-25_17-59-28.bmp Snipaste_2024-05-25_18-06-30.bmp Snipaste_2024-05-25_18-03-43.bmp Snipaste_2024-05-25_18-03-32.bmp


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115518
QQ
发表于 2024-5-26 09:37:31 | 显示全部楼层
这个使用的是那个系列,H743的话,是128KB为一个删除,你看下擦除的范围是不是对,别把正常程序擦除了。
回复

使用道具 举报

3

主题

382

回帖

391

积分

高级会员

积分
391
发表于 2024-5-26 10:07:09 | 显示全部楼层
离谱,我开始以为0x08060040是ram空间直接写入了,读出也是正常的。。。
板子用的是V7开缓存
Snipaste_2024-05-26_09-54-01.png
回复

使用道具 举报

13

主题

27

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2024-5-27 17:29:00 | 显示全部楼层
本帖最后由 13450334834 于 2024-5-27 17:41 编辑
eric2013 发表于 2024-5-26 09:37
这个使用的是那个系列,H743的话,是128KB为一个删除,你看下擦除的范围是不是对,别把正常程序擦除了。

擦除的范围是对的,擦除函数HAL_FLASHEx_Erase的返回值正常,写入函数HAL_FLASH_Program的返回值也是正常。(擦除函数和写入函数都是使用硬汉的bsp文件无改动)
找到问题了, 是因为第二次重复写入数值的时候地址不是32字节对齐,所以导致异常!


【STM32H7的Flash编程时,务必保证要编程的地址是32字节对齐的,即此地址对32求余为0。并且编程的数据必须32字节整数倍。】
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115518
QQ
发表于 2024-5-28 07:45:00 | 显示全部楼层
13450334834 发表于 2024-5-27 17:29
擦除的范围是对的,擦除函数HAL_FLASHEx_Erase的返回值正常,写入函数HAL_FLASH_Program的返回值也是正常 ...

谢谢告知最终原因,这个是H7芯片的特别要求,最小编写单位256bit
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 15:38 , Processed in 0.236948 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表