×
嵌入式 > 技术百科 > 详情

stm8s eeprom读写

发布时间:2020-06-03 发布时间:
|

stm8s有自带的eeprom,起始地址是0x4000,终止到哪看手册,因为我用的时候只写一个4字节数据,配置如下:


入参:eeprom偏移地址,写入的数据   


void eeprom_write(const unsigned char addr,unsigned long date)

{

   asm("sim");

   FLASH_CR1_FIX = 1;//编程时间固定为标准编程时间

   FLASH_CR2_WPRG = 1;//使能字编程

   FLASH_NCR2_NWPRG = 0;/使能字编程

   do

   { 

     FLASH_DUKR = 0xAE;

     FLASH_DUKR = 0x56;

   }

   while(!(FLASH_IAPSR_DUL & 1));//等待解锁

   unsigned long *p = (unsigned long*)(0x4000 + addr);

   *p = date;

   //while(!FLASH_IAPSR_EOP & 1);//等待写完成//加上掉电写入不准

   FLASH_IAPSR_DUL = 0;//上锁

   asm("rim");


}


说明:while(!FLASH_IAPSR_EOP & 1);被我注释掉了,原因如注释所写的那样,我也不知道为什么。然后写完之后记得上锁,要不然会不准。另外就是这里中文手册又出错了,就是do while语句中的那两句给FLASH_DUKR写入密钥,中文手册写反了。


读eeprom就比较简单了,代码如下:


入参:eeprom地址偏移量                             出参:相应地址的值*/

unsigned long eeprom_read(const unsigned char addr)

{

   return *((unsigned long*)(0x4000 + addr));

}


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题