IAP_5_读取内部Flash的数据

1、内部Flash

STM32内部Flash分为三部分,主存储器,信息块,Flash接口寄存器。

内部Flash作用
主存储器代码、数据常量
信息块启动程序、用户选择字节
Flash接口寄存器控制Flash读写操作的寄存器

2、读取内部Flash

对于内部Flash,可以在通用地址空间直接寻址,即通过指针直接取地址的内容。

读取 8位,*(uv8 *)ADDR;
读取16位,*(uv16 *)ADDR
读取32位,*(uv32 *)ADDR

要注意地址对齐的问题,16位的话地址要是2的倍数,32位的话地址要是4的倍数,否则可能导致HardFault。

2.1、Flash等待周期

STM32的系统时钟用的是72MHz,内部Flash的速度没有那么快,为了两者速度的配合需要设置Flash的等待周期。

通过闪存访问控制寄存器来设置对应的等待周期,72MHz的话LATENCY设为010.

在这里插入图片描述

这个操作不需要我写,例程已经做了,在system_stm32f10x.c文件的SystemInit()函数里的SetSysClock()函数里的SetSysClockTo72()函数。(突然搞笑…)

SetSysClockTo72函数中有对Flash_ACR寄存器的LATENCY操作,将其设为010,即两个等待状态。

  /* Flash 2 wait state */
  FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
  FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值