|
本帖最后由 toofree 于 2019-3-12 00:46 编辑 ! o$ R4 ^% B7 @+ T Y ( B6 c% {" J% q! m 【STM8-SO8-DISCO】——9、测试EEPROM 本贴实验以样例程序“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\FLASH\FLASH_DataProgram”为原型,将块编程写改为了字节写。 从数据手册得知,STM8S001J3只有128字节的EEPROM。
EEPROM起始地址(基地址)0x4000。
在main.c主程序中,修改添加EEPROM基地址宏定义,GPIO宏定义。测试数组GBuffer[128]定义。时钟配置、GPIO配置、Flash配置函数声明。
16M系统时钟、GPIO配置LED和KEY、Flash配置解锁EEPROM。FLASH_SetProgrammingTime()函数作用暂时没去研究,保留。
主函数main()中,有事没事加上5S开机延时,调用时钟配置、GPIO配置、Flash配置函数。
读取当前全部EEPROM内容到数组GBuffer[]; 当第个数组元素为0x00时设置dir=1,否则设置为0; 当dir为0时,即GBuffer[0]不等于0x00时,依次递加写入EEPROM数据从0x00到0x7F;当dir为1时,依次写入EEPROM数据从0x80到0xFF; 再次读取全部EEPROM内容到数组GBuffer[],观察数据是否正确。+ c- z( {1 A/ i 并增加设置两处断点。1 Y2 E: D4 h) D1 N! C$ d. P
# Y0 C" Y/ p& Z7 A8 P$ X 编译、下载和调试运行。并打开变量观察窗口,打开内存窗口选择查看EEPROM数据。 h3 Z+ q3 f! s8 U R/ S# P
全速运行,5S钟后,跑到第一处断点,查看EEPROM和数组GBuffer[]内容,依次全部为0x00到0x7F,是上一次程序运行是写入的数据。3 G/ O ]4 F C$ n( A
{ i9 r. C. v% l 全速运行跑到第二处断点,查看EEPROM和数组GBuffer[]内容,依次全部为0x80到0xFF。取消第二处断点,程序全速运行,看到LED灯在闪烁。: N6 N: G/ U; N
停止程序,将调试复位后,重新打断点调试运行。* E1 Q$ m5 F; c0 C# m 此次看到的现象,在第一处断点处数据为0x80到0xFF;第二处断点处数据为0x00到0x7F。每次数据都会交换。 2 s O7 n9 C+ f% d' D: x / V) \) Q4 U7 U. W' z 中间也测试过FLASH_EraseByte()函数,然而对于EEPROM读写来说,没啥作用,只是往地址中写0x00。对于EEPROM来说,不需要擦除操作,因为是“真EEPROM”。( k. Y8 |9 _ _) i: n0 C( q 1 I$ k8 D2 I* W Y( | l4 X 至此,EEPROM字节读写测试结束。 1 j Y, k! j$ W, k6 n) e3 N3 e 本贴测试工程附上:
STM8S_StdPeriph_Flash_EEPROM.rar
(267 KB, 下载次数: 18)
|
| 支持支持 |
| 感谢 感谢 |
| 感谢,感谢 |
STM8自学笔记(推荐STM8很好的入门电子书)
无刷直流电机控制应用+基于STM8S系列单片机---电子书
【精华资料】STM8Sxx固件库FOR IAR
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
微信公众号
手机版