OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3310|回复: 0

STM32F030使用FLASH模拟EEPROM读取中出错问题。

[复制链接]

4

主题

91

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2017-11-7
在线时间
311 小时
发表于 2018-4-21 00:48:30 | 显示全部楼层 |阅读模式
STM32F030F4P6使用FLASH模拟EEPROM,写入数据:
FLASH_ProgramHalfWord(0x08007800,0xDD);    //写入一个uint16_t类型数,stm32写flash的长度固定是16bit
FLASH_ProgramWord(0x08007802,0x89ABCDEF);  //写入一个uint32_t类型数
下装后调试查看FLASH地址数据已正确写入,读取数据:

uint16_t TT2;
uint32_t TT3;


    TT2 = *(uint16_t *)0x08007800;
    TT3 = *(uint32_t *)0x08007802;

执行到这句 TT3 = *(uint32_t *)0x08007802;就出错进入 HardFault_Handler,折腾了半天也没找出原因,用
*(uint16_t *)0x08007802  *(uint16_t *)0x08007804分段可读出写入的uint32_t类型数,上网查了半天,发现可能与4字节
对齐有关,将程序改为 FLASH_ProgramWord(0x08007804,0x89ABCDEF);读取正常,又实验下,发现uint32_t类型数地址必须
能被4整除,否则读出错,uint16_t类型数地址必须是偶数,否则也会出错。看来STM32读特定类型数据对地址有特殊要求,请
大神讲解下原因,谢谢。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 07:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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