打印

【连载】STM8L051F3_10_FLASH应用

[复制链接]
1498|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caijie001|  楼主 | 2018-5-24 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文介绍STM8L051F3的FLASH编程的相关知识。内容分为以下几部分:
  • FLASH编程简介
  • EEPROM读写
1、FLASH编程简介STM8L051F3的存储器架构可分为两部分:FLASH程序存储器和数据EEPROM,它们可以由普通的寄存器进行控制,通过这些寄存器,应用程序可以对存储器的内容进行编程/擦除或设为写保护,同时也能对选项字节进行编程。
对于不同芯片的型号对应的FLASH与EEPROM大小是不一样的,STM8L051F3属于STM8L的低密度型号,它的存储器结构如下:
  • 8Kbyte的FLASH
  • 256Byte的EEPROM
  • 64 option bytes


对存储器进行编程有Byte programming (字节编程)、Word programming(字编程)和Block programming(块编程),对于相关编程方法的详细介绍可以参考官方手册RM0031的第三章内容。
2、EEPROM读写2.1 EEPROM读写配置本小节介绍如何对STM8L051F3内部的EEPROM区域进行编程,内容较为简单,就是往某个地址写入一字节数据,然后读出来验证数据是否正确。读出来的数据与写入的数据相同LED1亮,否则LED2亮。使用的例程:STM8L051F3_10_FLASH。例程的操作步骤:
  • 定义FLASH编程时间
  • 解锁EEPROM区域
  • 往EEPROM区域的某个地址写入一字节数据
  • 读出写入EEPROM的数据
2.2 例程介绍本文采用的例程中主要的函数都在main.c文件中实现,主函数如下:
void main(void)
{
  uint8_t temp;
  LED_Init();   //初始化LED
  /* 定义FLASH编程时间 */
  FLASH_SetProgrammingTime(FLASH_ProgramTime_Standard);
  /* 解锁EEPROM */
  FLASH_Unlock(FLASH_MemType_Data);
  /* 等待解锁完成 */
while(FLASH_GetFlagStatus(FLASH_FLAG_DUL)== RESET);
  /* 往EEPROM地址0x1000 + 0 处写入数据0x11 */
  EEPROM_Write_Byte(0, 0x11);
  /* 读出EEPROM地址0x1000 + 0 处的数据 */
  temp = EEPROM_Read_Byte(0);
if(temp == 0x11) //判断数据是否正确
    GPIO_ResetBits(LED1_GPIO_PORT, LED1_GPIO_PINS);
else
    GPIO_ResetBits(LED2_GPIO_PORT, LED2_GPIO_PINS);
while(1)
{
;
}
}
EEPROM_Write_Byte函数如下:
void EEPROM_Write_Byte(uint8_t addr, uint8_t data)
{
  /* 往EEPROM地址0x1000 + addr 处写入数据 */
  FLASH_ProgramByte(FLASH_DATA_EEPROM_START_PHYSICAL_ADDRESS + addr, data);
  /* 等待写入完成 */
while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET);
}
EEPROM_Read_Byte函数如下:
uint8_t EEPROM_Read_Byte(uint8_t addr)
{
  uint8_t data;
  /* 读出EEPROM地址0x1000 + addr 处的数据 */
  data = FLASH_ReadByte(FLASH_DATA_EEPROM_START_PHYSICAL_ADDRESS + addr);
return data;  //返回读取到的数据
}
使用ST-LINK把程序下载到开发板,LED1亮。第一次下载后,把EEPROM_Write_Byte(0, 0x11);注释掉在编译下载,效果仍然是LED1亮,因为EEPROM是掉电保存的。把EEPROM_Write_Byte(0, 0x11)改为EEPROM_Write_Byte(0, 0x12)后编译下载,LED2亮(因为写入与读出的数据不匹配)。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:21ic公开课专区:http://open.21ic.com/ 21ic资料下载中心:http://dl.21ic.com/ 21ic项目外包中心:http://project.21ic.com/ 杰杰欢迎大家有空常来赛事专区逛逛

131

主题

3790

帖子

63

粉丝