要对flash的读写操作,必须了解flash结构。
STM32F411 是512Kbytes的flash,我这里使用第6扇区来对flash的读写操作。利用flash读写特性,可以使用某扇区来实现用户数据的保存。 首先初始化flash,初始化,主要就是解锁。
接下来是实现写flash函数,flash的写入,必须先进行擦擦操作,不然写入的数据将出现错误。
第一个参数是写入的地址,第二参数是待写入数据缓冲器,第三个是要写入的数据长度。 先擦除在进行写入数据。 HAL_FLASHEx_Erase是擦除函数。 HAL_FLASH_Program是写入函数。 接下来实现读取函数,flash的读取操作就简单很多,直接对地址操作。
第一个参数是读地址,第二参数是读取数据缓冲器,第三个是读取的数据长度。 读写完成之后,我们来验证一下结果。使用定时器周期性的读写,先写数据,然后再读取数据,通过读取数据与写入的数据比较,如果相同,LED灯周期性变化。 |