dxaws123456 2023-03-07 20:43 采纳率: 100%
浏览 123
已结题

STM32F407VET6-FLASH读写操作-数据写入失败-求解

STM32HAL库-针对芯片内部FLASH读保护实现防篡改、破解功能
https://blog.csdn.net/qq_36075612/article/details/116241705
你好,大师,你这个代码我想用在STM32F407VET6项目里,修改了几行代码,编译通过,但有四个警告,

img


警告信息:
converting a packed 'SystemParamTypeDef' pointer (alignment 1) to a 'uint32_t' {aka 'long unsigned int'} pointer (alignment 4) may result in an unaligned pointer value [-Waddress-of-packed-member]
翻译:将压缩的“SystemParamTypeDef”指针(对齐1)转换为“uint32_t”{aka“long unsigned int”}指针(对齐4)可能会导致未对齐的指针值[-压缩成员的地址]
下到芯片串口打印:

Flash_Test!!!
DisableReadProtection!!!
Device_id:0xFFFFFFFF, Hardware_Version:0xFFFFFFFF, Application_Version:0xFFFFFFFF, Application_Status:0xFFFFFFFF 
UPDATA!!! 
Device_id:0xFFFFFFFF, Hardware_Version:0xFFFFFFFF, Application_Version:0xFFFFFFFF, Application_Status:0xFFFFFFFF

这应该是数据没写进去吧?请教一下怎么改?

  • 写回答

7条回答 默认 最新

  • Ch_champion 博客专家认证 2023-03-08 09:25
    关注

    FLASH_If_Write(DATASTOREADDR, (uint32_t*)&SystemParam_default, page);
    FLASH_If_Read(DATASTOREADDR, (uint32_t*)&SystemParam_read, page);
    很久没弄了,都忘差不多了,凭借一点点记忆,给你回答此问题,这两个接口,需要自己实现,读写失败,原因大部分是F1与F4扇区不一致,你参考对应的datasheet,就懂了datasheet有详细说明,也可以查看这个 FLASH_EraseInitTypeDef 结构体,F1与F4它们的区别

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月7日