本代码是对eeprom 的读写操作,用定时器计时,把时间数据每秒写入eeprom,然后实时读出来,调试用串口打印
调试过程发现数据一直写不进eeprom,想了一晚上没有找到原因,反反复复检查,还是没发现错误,看例程是可以写进去的。对比也没有发现不同。
第二天早上重新看手册才发现问题: //mass密钥 解除EEPROM保护
FLASH_PUKR = 0xAE;
FLASH_DUKR = 0x56;
应该是
FLASH_DUKR = 0xAE;
FLASH_DUKR = 0x56;
FLASH_PUKR 是FLASH操作寄存器 不是eeprom寄存器,就一个字母只差。汗!!!!!!!!!!!
下面的代码是可用的
#include <iostm8s103f3.h>
#include <stdio.h>unsigned int eepromaddress;
unsigned int timeflag;
unsigned int time_count; //时间计数
unsigned char time[4];
/******************************************************************************/
//void GPIO_Init()
//{
// PD_DDR_bit.DDR2 = 1;
// PD_CR1_bit.C12 = 1;
// PD_CR2_bit.C22 = 1;
//
// PC_DDR_bit.DDR3 = 1;
// PC_CR1_bit.C13 = 1;
// PC_CR2_bit.C23 = 1;
// PC_DDR_bit.DDR6 = 1;
// PC_CR1_bit.C16 = 1;
// PC_CR2_bit.C26 = 1;
// PC_DDR_bit.DDR7 = 1;
// PC_CR1_bit.C17 = 1;
// PC_CR2_bit.C27 = 1;
//}
void Key_Init(void)
{//PD3
PD_DDR_bit.DDR3 = 0;
PD_CR1_bit.C13 = 1;
PD_CR2_bit.C23 = 0;
}
/*******

这篇博客记录了作者在使用STM8S微控制器进行EEPROM读写操作时遇到的问题。通过定时器每秒将时间数据写入EEPROM,并通过串口实时读取并打印。在调试过程中,发现数据无法写入,经过仔细比对和查阅手册,发现是由于误将FLASH_PUKR用于解除EEPROM保护,而应使用FLASH_DUKR。修正这一错误后,代码得以正常运行。
最低0.47元/天 解锁文章
8837

被折叠的 条评论
为什么被折叠?



