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

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

[复制链接]
damiaa 发布时间:2019-1-23 15:17
本帖最后由 damiaa 于 2019-1-23 15:50 编辑 & B) {% D# ^; L, Y+ b2 w& A
8 @: Z0 ?& I5 S; H8 W' {: N& }1 x2 W
STM8-SO8-DISCO】+ EEPROM读写- T. M* X. e6 Y/ o# T
【STM8-SO8-DISCO】+ EXIT中断中做按键去点灯帖子后 继续玩EEPROM- v+ T0 n, P. i5 M5 a; P
EEPROM是地址0X4000开始的128字节- k4 J# J- K$ o/ h; k3 F
1,工程以上面的。% |. s' E1 N. T0 |) q0 H1 J8 S% J
2,EEPROM 写程序
  1. void write_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num)
    # P. Y( b# c/ r! C, |
  2. {
    : |9 O8 V2 W3 ~* D$ ^3 T
  3.      uint8_t i;
    7 H& M4 G- F! q- [; a
  4.      /* Define FLASH programming time */& {' d# _; H6 @& y) ?
  5.      FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);1 v( H% j8 |  R/ d3 I  w( Y- v/ a
  6.      /* Unlock Data memory */3 c9 u! t" e& C4 k9 h" @2 w* P
  7.      FLASH_Unlock(FLASH_MEMTYPE_DATA);& l' `) O$ ?# p; j4 i8 x, |. p
  8.      for(i=0;i<num;i++)# m0 T% Y1 j* F+ h# ?
  9.         FLASH_ProgramByte(addr++, pDat[i]);0 E9 Z$ u+ L  m3 ^2 [& W% A4 \8 {
  10.      FLASH_Lock(FLASH_MEMTYPE_DATA);% G, O; i$ Q$ p* h
  11. }
复制代码

6 s% z3 n& M& B( f) R) }5 N3,EEPROM 读程序2 c0 Q7 y! y' j! R. o+ l
  1. void read_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num)5 s: }+ r; Y6 H9 l9 E' E
  2. {
    ' h) Y5 `6 U% K: k2 q4 r
  3.      uint8_t i;: u9 X, S/ r2 `& E
  4.      //eeprom_unlock();" s$ u& q" z7 b3 m, Z- ^0 i( g0 V
  5.      for(i=0;i<num;i++)
    3 [! ~- _" l6 O  F: h% j3 F
  6.         pDat[i] = FLASH_ReadByte(addr++);
    ! Y7 D' v4 d- ?: E: U- R! L
  7. }
复制代码

+ T$ m$ M  ~2 Y3 P4,把TIM4关掉(不知道为啥要这样)* X, {" e: ]: ~) y" d4 p
5,主程序调用
/ o- x$ F, V; j
  1. #include "stm8s.h") W4 `3 Q$ V$ V
  2. #define LED_GPIO_PORT  (GPIOA)  B- m0 E( z' R) E, ^1 R; W# g6 g
  3. #define LED_GPIO_PINS  (GPIO_PIN_3)+ s8 [, j9 Z+ J
  4. #define USER_BUTTON_GPIO_PORT  (GPIOC)
    % X+ v  G0 T  i' k7 @6 {' \
  5. #define USER_BUTTON_GPIO_PINS (GPIO_PIN_3) //这里可以设置为PC3,PC4,PC5中任何一个。7 G! B5 f  w! d$ H
  6. #define TIM4_PERIOD       124
    ! l7 e' x2 ~# Y  U. {- \5 @
  7. #define EEPROM_BEGIN 0x4000/ c7 y' H0 y% A; `% t! n8 ?
  8. void Delay(uint16_t nCount);( a! ~6 U- q  l- i& C3 u1 }2 m
  9. static void TIM4_Config(void);+ u2 l7 o+ f6 q! K; e  H* }0 C: E
  10. void LED1_Toggle(void);
    8 V6 r: Q1 v# C  P2 x4 p
  11. void Exit_Init();' b0 U- m0 e% {! t* `
  12. void eeprom_unlock(void);/ T2 \8 C4 V; @: L
  13. void write_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num);
    + {5 _* _1 y1 _% P5 }
  14. void read_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num);8 r. [; @! [! A* O
  15. uint32_t addr= EEPROM_BEGIN;
    3 ^6 O0 G( O' [( `0 F
  16. uint8_t test1[8],test2[8];& \: ^' y9 @' I4 d! w3 i) u$ Z9 G' f
  17. void main(void)
    7 A$ u% M: N3 ^, n# |
  18. {   # p  f2 c4 e6 }
  19.      /* Initialize I/Os in Output Mode */
    , a! |# S2 I/ V4 s/ [2 L( ?
  20.      GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
    , Z! d- J$ s" J& [" w* h  o# ?
  21.     /* Initialize I/O in Input Mode with Interrupt */
    7 {% E" m# j4 l2 }3 [! ^4 n" Z
  22.     Exit_Init();
    4 P  X0 u" |6 v: Z) V3 W( X9 K7 Z
  23.     /* TIM4 configuration -----------------------------------------*/5 t! O' B. L2 c2 [( t$ v
  24.     //TIM4_Config(); 4 T* ]# f8 z+ `4 w+ w0 b) @
  25.     while (1)
    0 h1 n1 M9 Z$ i6 S6 C1 |8 }
  26.     {9 @, S  t! \" S: z1 r; {
  27.         uint8_t j;
    & S, M3 X  O1 |1 L
  28.         for(j=0;j<8;j++)
    1 n7 [# p8 g6 n( l6 K! f( \3 J* X
  29.             test1[j] =10+j;
    : T! b+ d3 m+ [' {$ O
  30.         write_eeprom(EEPROM_BEGIN,&test1[0],8);1 N, A/ k2 R0 G' ~* u" T' F' K
  31.         Delay(10); " }4 J  ?8 r2 z
  32.         read_eeprom(EEPROM_BEGIN,&test2[0],8);
    % g' t$ r4 g  G2 X, H8 O9 l2 f
  33.         Delay(10); , |7 ?1 W0 Z7 G& L& z4 i' [
  34.     }
复制代码

% v5 ~0 `  |1 `" ?/ q7 H) }$ o. w6,结果:
/ ~2 S4 T4 z& r% H# n  {$ t, K QQ图片20190123151229.png " q" ^% [2 P( k7 M# w5 Q+ E
7,代码: eeprom_uart_test.zip (874.57 KB, 下载次数: 16)
赞 收藏 评论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:20* f: ?6 q% Y6 R
学习一下

+ u( V1 e4 e. |+ ]% }+ a: M
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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版