打印
[STM8]

STM8内部EEPROM读写操作

[复制链接]
3705|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
energyplants|  楼主 | 2016-10-16 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EEPROM容量介绍
   STM8S的EEPROM以32位字长(每字4字节)为基础组织起来。根据不同的器件,存储器组织机构有所不同:
● 小容量STM8S器件
─  8K FLASH 程序存储器,每页 64 字节,共 128 页
─  640 字节数据 EEPROM,每页 64 字节,共 10 页。
● 中容量STM8S器件
─  从 16K 到 32K FLASH 程序存储器,每页 512 字节,最多 64 页
─  1K 字节数据 EEPROM,每页 512 字节,共 2 页。
● 大容量STM8S器件
─  从 64K 到 128K FLASH 程序存储器,每页 512 字节,最多 256 页
─  从 1K 到 2K 字节数据 EEPROM,每页 512 字节,共 4 页。
41.2 实验目的   
掌握CPU内部EEPROM存储单元的操作步骤。掌握程序设计流程。
开发板送电后,按一下复位键后,程序执行写入和读取一次。
41.3 程序文件设计   41.3.1  main.c文件中的程序
主程序就实现初始化和调用驱动程序,这样主程序控制思路清晰,流程简单。要想了解全面详实的程序,请大家参考光盘(网盘)中程序及程序注释。
/***********************************************************************
*   说    明: 内部EEPROM读写操作
*   开发平台: 剑齿虎STM8开发板        
*   作    者: 刘洋 张殿东
*   版    本: V1.0
*   日    期: 2016-05-03   
*
*   IAR开发环境    版本 V2.20.1
*   ST库函数       版本 V2.2.0
***********************************************************************/
#include "pbdata.h"//引入自定义公共头文件
void BSP_Configuration(void);//硬件初始化函数声明
/***********************************************************************
*   函 数 名: main
*   功能说明: c程序入口
*   形    参:无
*   返 回 值: 错误代码(无需处理)
***********************************************************************/
int main(void)
{
  u32 add_byte=0x4000;
  u8 val=0;
  
  BSP_Configuration();//硬件驱动初始化函数
   
  FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); //设置编程时间为标准时间的一般
  FLASH_Unlock(FLASH_MEMTYPE_DATA);//解锁EEPROM
  
  FLASH_ProgramByte(add_byte,0xAB);//写数据操作函数
  val=FLASH_ReadByte(add_byte);//读取单个字节
  
  printf("%x\r\n",val);
  
  while(1)//主程序循环,反复执行循环体里的语句
  {
   
  }
}


沙发
energyplants|  楼主 | 2016-10-16 15:59 | 只看该作者
/***********************************************************************
*   函 数 名: BSP_Configuration
*   功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
*   形    参:无
*   返 回 值: 无
***********************************************************************/
void BSP_Configuration(void)
{  
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
  UART1_Congfiguration();//调用RS232串口1初始化函数
  LED_Init();//调用LED初始化函数
  rim();//打开总中断
}
/*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
#ifdef USE_FULL_ASSERT
void assert_failed(u8* file,u32 line)
{
  while(1)
  {
  }
}
#endif
实验效果
   没按下一次复位键,程序向内部EEPROM中写入一次数据,然后再读出来打印输出至显示器。
41.1 向内部EEPROM写入数据

使用特权

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

本版积分规则

21

主题

123

帖子

2

粉丝