STM32L031 LL库读写内部EEPROM
Posted シ゛甜虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32L031 LL库读写内部EEPROM相关的知识,希望对你有一定的参考价值。
由于STM32L031没有找到FLASH_PECR_FTDW寄存器,这里就把这个注释掉了
#include "eeprom.h"
#include "main.h"
//eeprom读测试
void eeprom_test_read()
uint32_t temp;
uint16_t i = 0;
for(i=0;i<256;i++)
temp = *(__IO uint32_t*)(EEPROM_BASE_ADDR+(i*4));
#ifdef ENABLE_PRINT
printf("data:%08x\\t",temp);
#endif
/*------------------------------------------------------------
Func: EEPROM数据按字节写入
Note:
-------------------------------------------------------------*/
void eeprom_write_bytes(uint16_t Addr,uint8_t *Buffer,uint16_t Length)
uint8_t *wAddr;
wAddr=(uint8_t *)(EEPROM_BASE_ADDR+Addr);
DIS_INT
FLASH->PEKEYR=PEKEY1; //unlock
FLASH->PEKEYR=PEKEY2;
while(FLASH->PECR&FLASH_PECR_PELOCK);
//FLASH->PECR|=FLASH_PECR_FTDW; //not fast write //没找到这个寄存器
while(Length--)
*wAddr++=*Buffer++;
while(FLASH->SR&FLASH_SR_BSY);
FLASH->PECR|=FLASH_PECR_PELOCK;
EN_INT
//eeprom写测试
void eeprom_test_write()
uint8_t datas[256];
uint16_t i = 0;
for(i=0;i<256;i++)
datas[i] = 0x2F;
eeprom_write_bytes(0,datas,256);
eeprom_write_bytes(256,datas,256);
eeprom_write_bytes(512,datas,256);
eeprom_write_bytes(768,datas,256);
头文件
#ifndef __EEPROM_H
#define __EEPROM_H
#define PEKEY1 0x89ABCDEF //FLASH_PEKEYR
#define PEKEY2 0x02030405 //FLASH_PEKEYR
#define EEPROM_BASE_ADDR 0x08080000
#define EEPROM_BYTE_SIZE 0x03FF
#define EN_INT __enable_irq(); //系统开全局中断
#define DIS_INT __disable_irq(); //系统关全局中断
void eeprom_test_write();
void eeprom_test_read();
#endif
串口打印的EERPOM数据
以上是关于STM32L031 LL库读写内部EEPROM的主要内容,如果未能解决你的问题,请参考以下文章