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

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

[复制链接]
damiaa 发布时间:2019-1-23 15:17
本帖最后由 damiaa 于 2019-1-23 15:50 编辑

STM8-SO8-DISCO】+ EEPROM读写
【STM8-SO8-DISCO】+ EXIT中断中做按键去点灯帖子后 继续玩EEPROM
EEPROM是地址0X4000开始的128字节
1,工程以上面的。
2,EEPROM 写程序
  1. void write_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num)
  2. {
  3.      uint8_t i;
  4.      /* Define FLASH programming time */
  5.      FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
  6.      /* Unlock Data memory */
  7.      FLASH_Unlock(FLASH_MEMTYPE_DATA);
  8.      for(i=0;i<num;i++)
  9.         FLASH_ProgramByte(addr++, pDat[i]);
  10.      FLASH_Lock(FLASH_MEMTYPE_DATA);
  11. }
复制代码

3,EEPROM 读程序
  1. void read_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num)
  2. {
  3.      uint8_t i;
  4.      //eeprom_unlock();
  5.      for(i=0;i<num;i++)
  6.         pDat[i] = FLASH_ReadByte(addr++);
  7. }
复制代码

4,把TIM4关掉(不知道为啥要这样)
5,主程序调用
  1. #include "stm8s.h"
  2. #define LED_GPIO_PORT  (GPIOA)
  3. #define LED_GPIO_PINS  (GPIO_PIN_3)
  4. #define USER_BUTTON_GPIO_PORT  (GPIOC)
  5. #define USER_BUTTON_GPIO_PINS (GPIO_PIN_3) //这里可以设置为PC3,PC4,PC5中任何一个。
  6. #define TIM4_PERIOD       124
  7. #define EEPROM_BEGIN 0x4000
  8. void Delay(uint16_t nCount);
  9. static void TIM4_Config(void);
  10. void LED1_Toggle(void);
  11. void Exit_Init();
  12. void eeprom_unlock(void);
  13. void write_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num);
  14. void read_eeprom(uint32_t addr,uint8_t *pDat,uint8_t num);
  15. uint32_t addr= EEPROM_BEGIN;
  16. uint8_t test1[8],test2[8];
  17. void main(void)
  18. {   
  19.      /* Initialize I/Os in Output Mode */
  20.      GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
  21.     /* Initialize I/O in Input Mode with Interrupt */
  22.     Exit_Init();
  23.     /* TIM4 configuration -----------------------------------------*/
  24.     //TIM4_Config();
  25.     while (1)
  26.     {
  27.         uint8_t j;
  28.         for(j=0;j<8;j++)
  29.             test1[j] =10+j;
  30.         write_eeprom(EEPROM_BEGIN,&test1[0],8);
  31.         Delay(10);
  32.         read_eeprom(EEPROM_BEGIN,&test2[0],8);
  33.         Delay(10);
  34.     }
复制代码

6,结果:
QQ图片20190123151229.png
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
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版