STC是电子相关专业同学的一种古老记忆。毕业后就再也没碰过,最近因为接了一个外快,非常简单的应用,帮写下程序。然后要掉电存储,结果就用上了它的EEPROM。也是好巧不巧,死活用不了,之前STM8之类的用的比较多,从没出过这种状况。更气人的是STC的烧录工具还有例程,结果完全照抄它的程序也不行。玩了数年的嵌入式Linux,结果被这个搞得没脾气。
也不多吐槽了,现在是可以了,虽然还不完美,先记录一下吧,看到网上还有不少同学还在坑里,心疼。希望能帮到后来的小伙伴,当然,也要感谢21CN的一个同学,我也算是从那边得到的帮助了。这里就完整地记录一下这个过程,尽量详细些。
我用到的是STC8F2K64S4,之所以要强调这个型号,是因为这型号的EEPROM区是自定义的。通过STC官方的下载工具来设置。
下面贴一下我的设置:
这里有几个需要注意的地方图片上已经框出来了,主要有以下几点:
1、烧录工具版本:V6.86S(这是我的版本,也可以用相近的版本)。再早些的版本可能会看不到“设置用户EEPROM大小”这个配置。
2、型号要选对,不同的型号会有不同的配置界面。
3、设置清空缓冲区(这不是必须的,默认就可以)。
4、用户程序运行时IRC频率,我用的11.0592M,当然其他的也可以,但是操作延时就要相应修改。
5、EEPROM大小。不能大于flash大小,比如我的是64K,不能设置得比64K大。另外它是从后往前分配的。实际上是一整块的flash,但是它是从后开始分配。例如我用的这款,总共64K,程序从0地址开始往后烧录,用多少算多少,EEPROM从最后开始分,比如我配的是8K,因此0~55K是代码区,56~63k是EEPROM区。
做完这些之后,你的程序基本上是可以的,但是我的不行。后来发现是写失败,因为写之前需要先擦除。这个没明白原因。现在是能用了,后面再看吧。
转载请注明:OpenMind » 关于STC8F2K64S4操作EEPROM无效的问题