单片机
返回首页

stm8s103f3p EEPROM的读写

2018-09-08 来源:eefocus

/**********************************************************************

/* MAIN.C file
 * 
 * Copyright (c) 2002-2005 STMicroelectronics
 */
//EEPROM的读写
//先对)0x40000写入0x12
//在读出来写的数据
//如果是0x12,就使得PD的前4位输出颠倒
#include 'stm8s103f.h'
unsigned char ch;
main()
{
 unsigned char *p;
 PD_DDR=0x0f;
 PD_CR1=0x0f;
 PD_CR2=0x00;
 PD_ODR=0x00;
 p=(unsigned char *)0x4000;//指针P指向EEPROM的第一个单元
 do
 {
   FLASH_DUKR=0xae;//写入第一个密钥
   FLASH_DUKR=0x56;//写入第一个密钥
 }while((FLASH_IAPSR&0x08)==0);//若解锁未成功,则继续写
 *p=0x12;//写入第一个字节
 while((FLASH_IAPSR&0x04)==0) ;//等待写操作成功
 ch=*p;
 
 while (1)
 {
   if(ch==0x12)
   { 
     PD_ODR^=0x0f;  
   }
 }
}

/**********************************************************************

 在用STVP烧写程序的时候会出现如图所示的警告

引用http://www.51hei.com/bbs/dpj-25357-1.html的解决办法

个人总结:延迟21毫秒后再操作EEPROM,延迟20毫秒烧录都会报错。(STM8S003F3)
我上个月也出现了这样的问题,对出现问题的的工程进行分析。
发现,在main函数中直接解除EEPROM的锁定,然后对特定的EEPROM地址进行赋值,只要赋的值不是0,就会报错,
直接插入CLR或者LD指令操作EEPROM地址,发现CLR指令不会报错,LD的会报错。也就是说,清零没问题,赋值会有问题。


今天,使用STVP下载的时候再次出现这样的问题,对多处修改进行分析。发现原来是我用的配置初始化函数中ConfigInit(),
有类似这样的语句*EEP_Config =ROM_Config(两个都是结构体,其中前面一个指向EEP,后一个在定义的时候带有const)。

今天早上之前都没有这个错误的,经查出现错误的原因是:以前我是在菜单状态机的第一个状态,在启动后一秒钟调用ConfigInit(),
而今天早上我是将ConfigInit()函数放到了第一个状态的入口动作上,也就是说在菜单状态机被初始化的时候,ConfigInit()函数就会被调用。
同时我是将初始化菜单状态机的函数,直接放在main函数中的,即上电后马上调用ConfigInit()!
将ConfigInit()函数延后执行后,程序下载恢复正常。

我才猜测是这样的:启动后的一段时间内不能对EEPROM进行赋值,要不然就会被报错。
结合在STVP下载的时候,能看到LCD狂闪,推论如下:
STVP在下载的时候,程序是可以断断续续的运行的,而在期间如果执行了赋值EEPROM的动作,那么STVP在随后对EEPROM的
检测的时候,发现并非全是0,就会将不是0的那个地址用下面的语句报错:
Verify failed at address0xXXXX
希望能帮到以后遇到这个问题的人~~

/************************************************************************************************************************************


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章