- 博客(2)
- 收藏
- 关注
原创 STM32 IAP中将uint8_t类型的数组以双字方式写入Flash的操作
用来接收升级数据包,而单片机(或者说编译器)在给这个数组分配地址时可能会分配到0x2000000A,显然这个地址不能被8整除,那么将这个地址强制转换为uint64_t类型的指针后单片机就会报硬件错误。解决这个问题的方法也很简单,只需要在定义这个数组时强制首地址8字节对齐就行。改成这样就可以啦,这样 flash_tdata的首地址就一定能被8整除了,那么在后面的转换的时就不会出错了。传入的 *buf的地址不是8字节对齐导致的,例如我们定义一个数组。
2025-09-26 15:47:43
231
原创 在IAP时对STM32 内部Flash写入的简单代码及bug记录
本文介绍了单片机Flash存储操作的实现代码,包含writeFlash和readFlash两个函数。writeFlash函数实现了将uint8_t数组数据以8字节双字形式写入Flash的功能,支持地址擦除和批量写入操作;readFlash函数则实现了从指定地址读取数据的功能。代码中特别注意事项包括:需要将单字节数组转换为双字指针,以及必须通过全局变量中转双字数据以避免硬件错误。该函数特别适用于IAP升级场景,可直接接收升级包数据并写入Flash,使用方便。
2025-09-26 09:55:51
260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅