[STM8] STM8内部EEPROM读写操作

[复制链接]
3988|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文件中的程序
主程序就实现初始化和调用驱动程序,这样主程序控制思路清晰,流程简单。要想了解全面详实的程序,请大家参考光盘(网盘)中程序及程序注释。
  1. /***********************************************************************
  2. *   说    明: 内部EEPROM读写操作
  3. *   开发平台: 剑齿虎STM8开发板        
  4. *   作    者: 刘洋 张殿东
  5. *   版    本: V1.0
  6. *   日    期: 2016-05-03   
  7. *
  8. *   IAR开发环境    版本 V2.20.1
  9. *   ST库函数       版本 V2.2.0
  10. ***********************************************************************/
  11. #include "pbdata.h"//引入自定义公共头文件
  12. void BSP_Configuration(void);//硬件初始化函数声明
  13. /***********************************************************************
  14. *   函 数 名: main
  15. *   功能说明: c程序入口
  16. *   形    参:无
  17. *   返 回 值: 错误代码(无需处理)
  18. ***********************************************************************/
  19. int main(void)
  20. {
  21.   u32 add_byte=0x4000;
  22.   u8 val=0;
  23.   
  24.   BSP_Configuration();//硬件驱动初始化函数
  25.    
  26.   FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); //设置编程时间为标准时间的一般
  27.   FLASH_Unlock(FLASH_MEMTYPE_DATA);//解锁EEPROM
  28.   
  29.   FLASH_ProgramByte(add_byte,0xAB);//写数据操作函数
  30.   val=FLASH_ReadByte(add_byte);//读取单个字节
  31.   
  32.   printf("%x\r\n",val);
  33.   
  34.   while(1)//主程序循环,反复执行循环体里的语句
  35.   {
  36.    
  37.   }
  38. }


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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

123

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部