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

STM8-SO8-DISCO】+ (3)EEPROM读写

[复制链接]
damiaa 发布时间:2019-1-23 15:17
本帖最后由 damiaa 于 2019-1-23 15:50 编辑 + k2 X8 \6 Y% b% @6 q
0 P0 }, e! ]5 }) h
STM8-SO8-DISCO】+ EEPROM读写
! X! W/ B$ s3 R% Y9 S【STM8-SO8-DISCO】+ EXIT中断中做按键去点灯帖子后 继续玩EEPROM
& B: S# G7 X2 v  dEEPROM是地址0X4000开始的128字节: K; J+ V8 e) ^1 p
1,工程以上面的。
& @. v. C% g; ]/ J" Z% {, ^' c& G* {2,EEPROM 写程序
  1. void write_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num)  J3 E1 ^0 q( ?$ P) {2 j$ l( s
  2. {
    2 i/ _  \3 i9 [6 r% @( d/ E$ q  i
  3.      uint8_t i;, M1 l. I$ c: f6 X7 v( Q" k
  4.      /* Define FLASH programming time */# n' M5 Y: T" K- i8 F. V' C4 x
  5.      FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
    ( a- F4 {6 _( V  p- }
  6.      /* Unlock Data memory */
    4 C, k5 ?7 i% u& K3 p; n4 y
  7.      FLASH_Unlock(FLASH_MEMTYPE_DATA);* V( u2 i. y0 v( j+ A( i9 E
  8.      for(i=0;i<num;i++)
    4 U  }9 {2 j5 T/ d$ s" N% C' J7 m( \
  9.         FLASH_ProgramByte(addr++, pDat[i]);" [; N! R4 f( z
  10.      FLASH_Lock(FLASH_MEMTYPE_DATA);
      ?, L& W7 z  `5 J
  11. }
复制代码

2 }# v0 e+ k4 U  ^, S3,EEPROM 读程序1 J1 `' n+ |6 k4 K
  1. void read_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num)
    + t4 ]! k0 J7 S  ^7 [7 j7 y
  2. {7 B* J; j( z, s4 S; @! ~- j
  3.      uint8_t i;
    : G4 z9 b( y( u* X5 f/ Y& V
  4.      //eeprom_unlock();
    * n( d( p1 z+ E; i+ w
  5.      for(i=0;i<num;i++): Y4 z$ J8 o& P) A% q  V
  6.         pDat[i] = FLASH_ReadByte(addr++);. J2 k4 O8 K; U2 y$ ]5 W
  7. }
复制代码

$ c% d7 [3 u; L! L. S4,把TIM4关掉(不知道为啥要这样)6 Q) T2 f1 R9 a  ~
5,主程序调用* w9 @/ A! Z: D/ i) C# ]+ v* \
  1. #include "stm8s.h") ?# D# n$ Z1 R% i, k- {5 P3 b( K
  2. #define LED_GPIO_PORT  (GPIOA)
    * d( w3 ?2 y7 A/ D8 H
  3. #define LED_GPIO_PINS  (GPIO_PIN_3)
    , x; f9 _3 h1 D! t  ~. H, K+ P& K
  4. #define USER_BUTTON_GPIO_PORT  (GPIOC)
    ; P# ~! T, }8 W8 g% n
  5. #define USER_BUTTON_GPIO_PINS (GPIO_PIN_3) //这里可以设置为PC3,PC4,PC5中任何一个。  O5 W* W; L) d$ u! D
  6. #define TIM4_PERIOD       124
    6 P4 I% L% W# _" ?% Q' G$ p
  7. #define EEPROM_BEGIN 0x4000. a) L# ?1 s9 u" d4 {7 m, O
  8. void Delay(uint16_t nCount);
    , T; e* F7 `+ Q# S3 [  e8 d
  9. static void TIM4_Config(void);
    ! b" P/ T- h4 R0 S
  10. void LED1_Toggle(void);
    9 C- j& ~8 y8 X+ \3 y5 @* w6 N
  11. void Exit_Init();& p# b5 }" E% Z! ?
  12. void eeprom_unlock(void);$ W! [0 B1 F7 j
  13. void write_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num);* Q' b. N9 j, G6 ]4 @
  14. void read_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num);
    / {; N: E* @6 `2 c
  15. uint32_t addr= EEPROM_BEGIN;
    $ c; ~% x3 G7 a
  16. uint8_t test1[8],test2[8];
    , [- F) Q) Z+ s" S* R
  17. void main(void)
    8 s7 D( M7 P1 g7 ~; r5 Z
  18. {   
    & Z8 l' ?% G2 A
  19.      /* Initialize I/Os in Output Mode */
    ) z# J9 i% x" e) B) _/ X  C
  20.      GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
    ( a1 m0 `& {" R! t7 e1 y& f) q
  21.     /* Initialize I/O in Input Mode with Interrupt */* _3 }# d; W& [7 c
  22.     Exit_Init();
    - {3 [0 z* L0 y. ]: M0 `  Y
  23.     /* TIM4 configuration -----------------------------------------*/
    1 d. v/ Y+ ]5 Q9 s
  24.     //TIM4_Config(); ) j) n" U1 j8 ]9 `" Y  X0 U7 \
  25.     while (1)
    * s: \' P0 p7 n0 P  o
  26.     {7 d' ^# t% A3 {3 e3 J
  27.         uint8_t j;+ E4 W2 J& o" w* T/ J8 `- p/ E  c9 j
  28.         for(j=0;j<8;j++)' H) r3 z; J0 i+ i! S
  29.             test1[j] =10+j;
    ' e  e0 z( |5 \) h4 U: L8 R
  30.         write_eeprom(EEPROM_BEGIN,&test1[0],8);
    1 R/ C4 w" |3 M
  31.         Delay(10);
    4 l8 L. c: P& H+ ~/ S- \8 j
  32.         read_eeprom(EEPROM_BEGIN,&test2[0],8);8 H2 j) k, L: x6 y+ E6 g; s
  33.         Delay(10);
    ! X" J) {6 l: @0 e% o
  34.     }
复制代码
, q. V( \5 w/ _+ z" o/ g  ]0 V
6,结果:
7 B+ n% {. j# o( w2 V QQ图片20190123151229.png ! ?3 [4 Q' A+ B
7,代码: eeprom_uart_test.zip (874.57 KB, 下载次数: 14)
收藏 评论7 发布时间:2019-1-23 15:17

举报

7个回答
xujiantj 回答时间:2019-1-24 09:20:02
学习一下
damiaa 回答时间:2019-1-24 09:42:25
xujiantj 发表于 2019-1-24 09:201 z. Z' j% \9 L# p" J* J% [7 g) r
学习一下

* A: y2 B, u3 e0 }
lanbu 回答时间:2019-1-24 10:04:13
学些下
Kevin_G 回答时间:2019-1-24 10:06:39
好东西,谢谢分享
damiaa 回答时间:2019-1-24 11:59:34
@lanbu @Kevin201707
yangjiyou1969 回答时间:2019-3-6 08:23:32
正好需要
lwg8458 回答时间:2019-3-6 10:04:05
学习
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版