STM32微控制器的闪存是嵌入式系统中存储程序代码的关键组成部分。本文将介绍如何使用STM32的内部FlASH闪存。使用FLASH可以利用程序存储器的剩余空间来保存重要的数据,使其掉电不丢失;也能通过在程序中编程(IAP),来实现程序的自我更新。
在FLASH中通过FPEC来完成对程序存储器和选项字节的擦除和编程。
如何操作控制器FPEC:
操作闪存的第一步就是对FLASH解锁,其目的是为了防止误操作,解锁的方式与独立看门狗一样。
FPEC有三个键值:RDPRT、KEY1、KEY2。
复位后,FPEC处于被保护的状态中,不能写入FLASH_CR,FLASH_KEYR先写入KEY1,再写入KEY2,解锁,如果出现错误操作,则会在下次复位前锁死FPEC和FLASH_CR。
加锁的话,需要设置FLASH_CR中的LOCK位,将其置1,即可锁住FPEC和FLASH_CR。
使用指针读指定地址下的存储器:
uint16_t Data = *((__IO uint16_t *) (0x08000000));
使用指针写指定地址下的存储器:
*((__IO uint16_t *)(0x08000000)) = 0x1234;