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

STM8-SO8-DISCO -- 12、STM8L050 内部EEPROM读写测试

[复制链接]
TLLED 发布时间:2019-2-21 14:34
& D# L8 L; u7 y+ r/ C- s
   
7 E! d, X3 i8 J$ [    使用STM8L050读写内部eeprom测试程序。
. ]4 c8 O+ y, x  w; {1 O0 c7 [; a    STM8L050手册上EEPROM内部空间是256B。
* T6 O3 K4 \, e9 P- r; J    % Y; o9 m) i8 r5 ?  U
    一、手册资料
9 Y* v* C3 L, b- B0 U$ p0 \    ; _: A9 h6 H0 {, [: f
    01.png
8 m% d3 w6 Z* V* A/ \7 Y7 C/ Q   
- }1 C0 P( Z- i    二、程序部分9 y2 s. T" h) x8 u
   
  ~0 T5 S& T' }% H% u5 @    2.1、eeprom程序: {$ O' V5 W1 [
   
1 f8 S6 Z. m, D3 @- D
  1. //eeprom.c
    & G& t: H2 `7 X
  2. #include "stm8l15x.h"% j" i$ h& Y2 g, Q4 k

  3. : Y, T: F0 x) ?/ |9 ~
  4. //eeprom初始化' V1 S2 ~* m1 y  ?; ~* }
  5. void eeprom_init(void)
    4 h% _2 D# ~  w
  6. {
      y* e' [) \. x; v
  7.     FLASH_SetProgrammingTime(FLASH_ProgramTime_Standard);   
    1 K3 E0 D0 g5 f% ~* r: |9 Z
  8.     FLASH_Unlock(FLASH_MemType_Data);5 G/ o3 {9 \3 D7 |# A, d
  9.     while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET);/ @: T/ Q) b' M: w
  10. }
      o! l# F- d  ~8 f2 G! }" y

  11. * x4 G) n* R+ J8 |1 D% o7 k
  12. //eeprom写一个字节0 F8 f  |# k( ~, X/ z) G
  13. void eeprom_write(uint32_t addr, uint8_t dat), z/ g, \- I' T2 h% G0 Z
  14. {0 A( U7 j5 C5 R- I9 z$ E
  15.     FLASH_ProgramByte(addr, dat);- T1 |# ]0 v2 I2 y2 W# W
  16.     FLASH_WaitForLastOperation(FLASH_MemType_Data);' l% ], C4 v" ]# p& ?
  17. }
      V9 ]5 F2 C0 p( v2 b, n
  18. //eeprom读一个字节
    1 x$ Z8 s' ?# Z9 E6 A1 K- S* K. z
  19. uint8_t eeprom_read(uint32_t addr)
    4 N4 Y( q- W; B% p; q% M& |
  20. {: L  [0 W5 O. T& Z
  21.     uint8_t idat = 0;, y1 E( [2 t. r
  22.     1 g( @- b. {5 ~) |5 C" X5 `7 D8 F5 W
  23.     idat=FLASH_ReadByte(addr);5 |( k) W" |9 V
  24.     FLASH_WaitForLastOperation(FLASH_MemType_Data);
    0 v* ]# _5 q/ q8 s" c3 r

  25. . Y( q0 S+ ~3 Q3 N
  26.     return idat;
    - O) A1 s( j2 |0 ~9 B, Y
  27. }  }# r3 y9 i% Q

  28. . q0 g1 k# _* T' e2 ^
  29. //eeprom.h5 i- |& n* k# ~& _( c# v2 Q% Y
  30. #ifndef __EEPROM_H
    * B& [4 |9 N. Y$ W# L! m& k0 z$ j3 B
  31. #define __EEPROM_H- t2 v- I2 S3 g* Z5 ?

  32. ( n. f1 W( d+ K" b* D0 f
  33. void eeprom_init(void);
    5 |4 e" o6 f  t2 E8 g; C5 {$ B
  34. void eeprom_write(uint32_t addr, uint8_t dat);. O1 G0 A- C3 `& R" Z  S$ a: b* _& L6 s" b
  35. uint8_t eeprom_read(uint32_t addr);0 ]( h+ N  E# B& n4 l

  36.   f0 Y* \- j, L. O! ?
  37. #endif
复制代码

7 q) I3 Q7 |  d8 O  c6 F' u    2.2、主程序5 }' E6 m5 N2 j. W( M5 ~
   
: g; K6 u' J0 B, W/ B$ s- v
  1. void main(void)
    $ p! A, D! {# h3 |
  2. {& l' x9 S# _* L, a8 g1 }  w2 ?
  3.   uint8_t i=0;
    ; d9 R0 l  Y0 M  h* Q- R2 Q
  4.   uint8_t j=0;( w1 R1 U) z. i0 a7 P& C0 ?. W4 _
  5.   CLK_Config();           //时钟初始化
      y, b3 T3 ^+ ~  o
  6.   
      d" d9 `7 s8 s
  7.   Delay(0x2fffff);        //延时5S            
    7 U( E: e* k: j- T5 Y9 p- k! W
  8.   
    9 U" _" U, ~9 U* B
  9.   uart_init_halfduplex();   //串口初始化            0 ]6 Y1 F' G! ?
  10.   eeprom_init();            //EEPROM初始化3 D4 N4 @3 G9 F: Y3 c
  11.   for(i=0;i<255;i++)
    * r& ~! W% m5 ]: ]3 V
  12.   {# m, o! v7 X1 O
  13.     eeprom_write(0x1000+i, i);+ v6 X+ u) E1 h9 z- `8 J
  14.   }
    4 e7 r+ ~5 u1 H" Z) k

  15. 2 A+ G$ K% @9 h' K1 c: D1 X
  16.   while (1)
    1 a& W2 @+ P) E1 B, {
  17.   {, i$ X6 s& N6 L( X5 h! \2 ?7 k5 A9 ^
  18.     for(i=0;i<255;i++), H$ H: _$ M7 `3 ]1 ^8 r5 P
  19.     {
    & V% y, Q( G8 [& l$ I+ c
  20.       j=eeprom_read(0x1000+i);) H$ {9 Q: C/ B
  21.       Uart_SendDat(j);* |/ x. }+ [5 \3 V
  22.     }
    . ^6 i% U% m9 [
  23.     Delay(0xfffff);. [9 W" O- V0 r7 R: D/ n; a
  24.   }$ D: I2 y0 s) F' h
  25. }
复制代码

7 u0 M6 q+ u5 Z+ Y& H% w    三、执行结果
  \' G( i; Q( J    ; p& ^# B" Z/ Y8 ^8 V4 H+ f
    串口输出结果:5 |( n" f2 J- b0 |! S5 u
    02.png # b0 D; ]" M3 s8 P( D: G9 r$ Q2 z

1 c9 U) P3 g8 ~! u! h+ u% I' r

' J6 e& V$ \3 ?) }! o& ]
" |$ i, a- |! C/ h! t& |
赞 收藏 评论1 发布时间:2019-2-21 14:34

举报

1个回答
cnc2020 回答时间:2019-2-24 11:00:53
very good topic, very detail, ding

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版