你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM8-SO8-DISCO】——9、字节方式读写EEPROM

[复制链接]
七哥 发布时间:2019-3-11 01:45
本帖最后由 toofree 于 2019-3-12 00:46 编辑
) E9 o! Z4 `: w' @% e- n
9 \- ^' V) S7 U7 K
【STM8-SO8-DISCO】——9、测试EEPROM

& X5 H6 Q9 o* d

! W- D4 d! x5 B$ O# S9 ?1 S3 w0 ~  本贴实验以样例程序“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\FLASH\FLASH_DataProgram”为原型,将块编程写改为了字节写。
5 ^  L7 H  J8 \. X

. e& i; X9 T. d0 K  从数据手册得知,STM8S001J3只有128字节的EEPROM。
/ [8 r: K9 [. E/ f0 h# e 01.jpg + ~. x$ R# M) R

1 F( D2 q' B" f$ b  p
  EEPROM起始地址(基地址)0x4000。
: m; ?  d. G- T# B) S 02.jpg
. L/ Z. F6 z  T; P' q9 {/ ]  ^* b8 Z
4 K- w8 W  ]) O( I/ z
  在main.c主程序中,修改添加EEPROM基地址宏定义,GPIO宏定义。测试数组GBuffer[128]定义。时钟配置、GPIO配置、Flash配置函数声明。
5 w+ t6 B- h: G- [ 21.jpg
8 w) y1 ]3 D/ U5 V5 f. E+ p3 k7 t4 \3 l8 M- g8 I- h
  16M系统时钟、GPIO配置LED和KEY、Flash配置解锁EEPROM。FLASH_SetProgrammingTime()函数作用暂时没去研究,保留。8 f8 M+ I; O% \7 |
22.jpg
3 C3 k# p) Z+ _+ l+ w% D5 w- ?& i: A" s- P
  主函数main()中,有事没事加上5S开机延时,调用时钟配置、GPIO配置、Flash配置函数。
4 l/ [/ q$ p! _% E8 @ 23.jpg ( c+ F- F/ D7 r0 w; ]1 |# |, P
' x. I, _& G; F$ R8 M3 C+ F
  读取当前全部EEPROM内容到数组GBuffer[];  [. V; ?! l/ x2 x1 p
  当第个数组元素为0x00时设置dir=1,否则设置为0;
- k9 X4 v* [. H( v6 W1 b  当dir为0时,即GBuffer[0]不等于0x00时,依次递加写入EEPROM数据从0x00到0x7F;当dir为1时,依次写入EEPROM数据从0x80到0xFF;
$ S2 Q2 R6 I$ C5 o" i3 k  再次读取全部EEPROM内容到数组GBuffer[],观察数据是否正确。" a* H7 F' [3 b9 y5 }
  并增加设置两处断点。
" m) I; _# ?7 M/ E' F 24.jpg 5 T0 S; X" j) W: F' T

0 l4 |$ s  s. d, A5 M  编译、下载和调试运行。并打开变量观察窗口,打开内存窗口选择查看EEPROM数据。% R$ f( ^# Q. t7 y0 n
11.jpg
: b* x- g0 o) _- s( j: G* X: _5 |: c8 X
  全速运行,5S钟后,跑到第一处断点,查看EEPROM和数组GBuffer[]内容,依次全部为0x00到0x7F,是上一次程序运行是写入的数据。8 f' O9 `4 b+ H
12.jpg $ J. h$ f5 \0 {, y
0 [8 V' v2 g$ ^7 x5 R5 K; k
  全速运行跑到第二处断点,查看EEPROM和数组GBuffer[]内容,依次全部为0x80到0xFF。取消第二处断点,程序全速运行,看到LED灯在闪烁。
( h' u9 ]2 S% T# J. Q 13.jpg ; A- B/ Q  M$ L
1 C3 C, D. o- l, W" d3 i
  停止程序,将调试复位后,重新打断点调试运行。: P$ d. f" A, B0 B
  此次看到的现象,在第一处断点处数据为0x80到0xFF;第二处断点处数据为0x00到0x7F。每次数据都会交换。
! r1 i; e, X" h' p0 F  R( W( {  q  M2 R( m

6 M4 m- p8 Q4 R# U: a  中间也测试过FLASH_EraseByte()函数,然而对于EEPROM读写来说,没啥作用,只是往地址中写0x00。对于EEPROM来说,不需要擦除操作,因为是“真EEPROM”。, K1 e6 c2 H7 _  Y+ j4 R
4 i- k& s9 K8 v  q
  至此,EEPROM字节读写测试结束。
5 y6 W4 w; I( h/ B! v3 l" k) D- J' \% z8 l6 a. E
3 r8 ?* G4 K+ E
  本贴测试工程附上:, O9 m+ _! d! E3 i3 f" J) J4 i$ I1 X
   STM8S_StdPeriph_Flash_EEPROM.rar (267 KB, 下载次数: 15)
收藏 评论3 发布时间:2019-3-11 01:45

举报

3个回答
STMCU-管管 回答时间:2019-3-22 17:51:38
支持支持
qytcs 回答时间:2019-6-10 10:56:39
感谢  感谢   
wangdexin 回答时间:2019-7-17 14:04:28
感谢,感谢
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版