打印
[ARM入门]

众拳【STM8入门】第41讲 STM8内部EEPROM读写操作

[复制链接]
927|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第41讲.STM8 内部EEPROM读写操作.pdf (333.33 KB)
众拳【剑齿虎STM8】开发板学习笔记分享
41讲   STM8内部EEPROM读写操作
41.1 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开发板        
*   关注微信公众平台微信号:"zxkj-ly",免费获取STM8资料。
*   STM8技术交流QQ群【335123291】
*   哈尔滨卓恩科技开发有限公司
*
*   作    者: 刘洋 张殿东
*   版    本: 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)//主程序循环,反复执行循环体里的语句
  {
   
  }
}
/***********************************************************************
*   函 数 名: 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
41.4 实验效果
   没按下一次复位键,程序向内部EEPROM中写入一次数据,然后再读出来打印输出至显示器。
41.1 向内部EEPROM写入数据
   

相关帖子

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

本版积分规则

148

主题

499

帖子

64

粉丝