历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2019年09月16日 | STM8S学习05——EEPROM读写操作C语言程序

2019-09-16 来源:eefocus

/*

这两天项目开发中,用到STM8的EEPROM功能,几个数据要掉电保存,在网上也查了一下EEPROM操作,发现网上出现的问题主要有两点:

1、EEPROM读写不成功;

2、EEPROM读写的时间太长;


看了一下ST的库函数,自己测试了一下,没有发现什么问题,比较正常;在读写EEPROM期间,也有动态扫描LED数码管,没有发现数码管有闪烁。


操作过程中:

1、开发平台:STM8S105K4T6 IAR6.3 ST库版本 V2.1.0

2、操作EEPROM,使用到的库函数:

  FLASH_Unlock(FLASH_MEMTYPE_DATA);

  while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET);

  FLASH_ProgramByte(FLASH_DATA_START_PHYSICAL_ADDRESS + dLocal_Addr,dLocal_Data);

  FLASH_Lock(FLASH_MEMTYPE_DATA);

  FLASH_ReadByte(FLASH_DATA_START_PHYSICAL_ADDRESS + dLocal_Addr)

3、自己封装了3个函数:测试通过

       void MEEPROM_Init(void);//用于第一次上电及上电初始化

       void MEEPROM_WriteByte(u16 dLocal_Addr,BYTE dLocal_Data);//写一个数据到EEPROM中

       BYTE MEEPROM_ReadByte(u16 dLocal_Addr);//从EEPROM中,读取一个字节的数据

4、整个函数包:一个头文件,一个.C函数体文件

*/



/********************** 系统变量及头文件 *********************************/

#ifndef __A20_EEPROM_CON_H

#define __A20_EEPROM_CON_H



//--EEPROM中存储数据地址的分配----------------------------------------

#define MACOR_EEADDR_SYSINT     0

#define MACOR_EEADDR_DIPMODE    1



void MEEPROM_Init(void);

void MEEPROM_WriteByte(u16 dLocal_Addr,BYTE dLocal_Data);

BYTE MEEPROM_ReadByte(u16 dLocal_Addr);


#endif


/**********************

STM8内部EEPROM读写程序

***********************/

#include "stm8s.h"

#include "A00_main.h"



/********************************************************************

****1.EEPROM数据初始化

*********************************************************************/

void MEEPROM_Init(void)

{

  BYTE dLocal_1;

  FLASH_DeInit();

  dLocal_1 = MEEPROM_ReadByte(MACOR_EEADDR_SYSINT);

  if(dLocal_1 == 0xAA) //EEPROM区有初始化

  {

//时钟显示模式相关初始化

dSYS_DipMode = MEEPROM_ReadByte(MACOR_EEADDR_DIPMODE);

if(dSYS_DipMode == 1) //进入动态显示

{

 dClock_RollNUM = 0;

 dClock_RollTmr = 0;

 str_SysClock.dClock_SetBit = 0;

 MClock_Sec_Dot_OnOff(DISABLE);

    }

else //进入时分显示

{

 MClock_Sec_Dot_OnOff(ENABLE);

 str_SysClock.dClock_SetBit = 3;

    }

  }

  else //初次上电,EEPROM区需要初始化

  {

    //时钟显示模式相关初始化

dSYS_DipMode = 0;

    MClock_Sec_Dot_OnOff(ENABLE);

    str_SysClock.dClock_SetBit = 3;



    MEEPROM_WriteByte(MACOR_EEADDR_SYSINT,0xAA);

    MEEPROM_WriteByte(MACOR_EEADDR_DIPMODE,dSYS_DipMode);

  }

  return;

}



/*******************************************************************************

****2.EEPROM中写入一个字节

****  dLocal_Addr:EEPROM中的地址,从0开始,在函数写时,加入了初始地址 FLASH_DATA_START_PHYSICAL_ADDRESS

****              当前EEPROM空间为:0x4000--0x43FF;该参量的取值范围:0 - 0x3FF

****  dLocal_Data:要写入EEPOM中的数据

*******************************************************************************/

void MEEPROM_WriteByte(u16 dLocal_Addr,BYTE dLocal_Data)

{

  FLASH_Unlock(FLASH_MEMTYPE_DATA);

  while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET);

  FLASH_ProgramByte(FLASH_DATA_START_PHYSICAL_ADDRESS + dLocal_Addr,dLocal_Data);

  FLASH_Lock(FLASH_MEMTYPE_DATA);

  return;

}

/*******************************************************************************

****3.从EEPROM中读取一个字节

****  dLocal_Addr:EEPROM中的地址,从0开始,在函数写时,加入了初始地址 FLASH_DATA_START_PHYSICAL_ADDRESS

****              当前EEPROM空间为:0x4000--0x43FF;该参量的取值范围:0 - 0x3FF

*******************************************************************************/

BYTE MEEPROM_ReadByte(u16 dLocal_Addr){

    BYTE dLocal_1;

    dLocal_1 = FLASH_ReadByte(FLASH_DATA_START_PHYSICAL_ADDRESS + dLocal_Addr);

    return dLocal_1;

}

推荐阅读

史海拾趣

FCI [First Components International]公司的发展小趣事

在电子行业中,FCI(First Components International)公司作为一家知名的连接器和互联系统制造商,其发展历程中确实有许多值得分享的故事。以下是关于FCI公司的五个发展故事:

  1. FCI的气体流量计与传感器技术突破

FCI作为一家全球性的气体流量计、气体和液体流量开关以及液位开关的制造商,其产品广泛应用于各种工业领域。为了满足不断增长的市场需求,FCI投入大量研发资源,成功开发出高精度、高可靠性的气体流量计和传感器。这些产品在化工、能源、环保等多个领域得到了广泛应用,为FCI赢得了良好的市场口碑。随着技术的不断创新和产品质量的持续提升,FCI逐渐成为了行业内的佼佼者。

  1. FCI中国分公司的成立与服务升级

随着中国市场的快速发展,FCI看到了在中国市场发展的巨大潜力。为了更好地服务中国客户,FCI决定在中国成立分公司。分公司的成立,不仅为FCI提供了更贴近本地市场的服务平台,还为其在中国市场的业务拓展提供了有力支持。分公司雇佣了一批在过程仪表和测量控制方面经验丰富的员工,并新增了数条经过认证的高精度流体标定台,以提供专业的服务和技术支持。这一举措显著提升了FCI在中国市场的竞争力和品牌影响力。

  1. FCI的AirMax VS高速背板连接器技术革新

为了满足未来高速数据传输的需求,FCI投入巨资研发新一代的高速背板连接器技术。经过多年的努力,FCI成功开发出了先进的AirMax VS高速背板连接器技术,为未来传输速率达到40Gb/s的设计奠定了基础。这一技术的推出,不仅巩固了FCI在连接器行业的领先地位,还为其在高速数据传输领域的发展打开了新的市场空间。

  1. FCI与航空领域的深度合作

随着航空技术的不断发展,对高精度传感器和流量计的需求也日益增长。FCI凭借其在气体流量计和传感器方面的技术优势,成功打入了航空领域市场。公司与多家知名航空企业建立了深度合作关系,为其提供定制化的产品和解决方案。这些产品在航空器的燃油系统、液压系统以及环境控制系统中发挥着重要作用,为航空安全提供了有力保障。

  1. FCI的全球化战略布局

为了适应全球化的市场趋势,FCI积极拓展其国际业务。公司通过并购、合资等方式,在全球范围内建立了多个生产基地和销售网络。这些举措不仅提高了FCI的生产效率和响应速度,还使其能够更好地服务全球客户。同时,FCI也加大了对新兴市场的投入,通过与当地合作伙伴的紧密合作,成功打入了多个具有潜力的市场领域。

以上五个故事展示了FCI在电子行业发展中的关键里程碑和重大成就。从技术创新到市场拓展,再到全球化布局,FCI始终保持着敏锐的市场洞察力和强大的竞争力,不断推动着电子行业的发展进步。

Green Power Solutions公司的发展小趣事
将新的电子管按照原位置和方向安装好,并确保连接牢固可靠。
ACCRETECH公司的发展小趣事
确保稳压器工作在适宜的环境中,避免潮湿、高温或强磁场等不利条件。
酷宅(Coolkit)公司的发展小趣事

酷宅科技在追求经济效益的同时,也积极履行社会责任。公司关注环保和可持续发展问题,推动绿色制造和绿色消费。在产品设计和生产过程中,酷宅科技注重节能减排和资源循环利用,努力降低对环境的影响。此外,公司还积极参与公益事业和社会活动,为社会做出积极贡献。

以上五个故事框架涵盖了酷宅科技在电子行业中的发展历程、市场策略、技术创新和社会责任等方面。每个故事都基于事实进行描述,旨在客观展现酷宅科技在电子行业中的发展轨迹和贡献。

Adam Tech公司的发展小趣事

随着全球环保意识的提高,Adam Tech也积极响应绿色制造的号召。公司在生产过程中采用环保材料和工艺,减少对环境的影响。同时,公司还加大了对绿色产品的研发力度,推出了一系列符合环保标准的产品。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

这五个故事只是Adam Tech在电子行业发展过程中的一部分缩影。正是凭借着对技术的不断追求、对品质的严格把控以及对市场的敏锐洞察,Adam Tech得以在激烈的竞争中脱颖而出,成为电子连接器行业的佼佼者。

CWIND公司的发展小趣事

在激烈的市场竞争中,CWIND公司始终坚持以客户为中心的服务理念。公司建立了完善的客户服务体系,为客户提供从产品咨询、购买到售后服务的全方位支持。同时,公司还注重品牌建设和宣传推广工作。通过加大广告投放力度、举办品牌活动等方式,CWIND逐渐提升了品牌知名度和美誉度。在消费者心中树立起了良好的品牌形象和口碑效应。

问答坊 | AI 解惑

电压不足期间支持电信电源的小电容

本设计实例介绍如何在短暂电压不足期间使电信设备保持正常工作。首先必须了解电信设备专用电源的几个细节。向电信设备馈电的电源的共模电压为-48V,尽管实际电压范围可能是-42.5V ~ -56V、-40V ~ -60V,甚至超出这些范围。公共电源——“砖块”DC/D ...…

查看全部问答>

SABER与控制系统仿真

SABER与控制系统仿真…

查看全部问答>

学生求助CE串口开发问题

大家好,学生以前接触的硬件类比较多,这次需要在2440板子下跑wince,用串口读数据,我找了很多资料,发现都是直接给代码的,学生求助,是在什么环境下编译?PB吗?如果是PB的话,就是改PB里哪里的程序呢???学生很疑惑,学生其实是想用VS2005中 ...…

查看全部问答>

68013A端点EP6OUT的BULK写失败求助,急!!

68013A端点EP6OUT的BULK写失败求助,急!! 易用专业的PCI、USB、LED方案正在对68013A采用slavefifo方式进行bulk读写操作 我用EP2做in端点,1024字节,2从缓冲 用EP6做OUT端点,512字节,4从缓冲 我写好了68013A的固件,用CYPRESS的开发工具 ...…

查看全部问答>

Shell组件的选择问题??

   用PB编制系统镜像,由于用到SHFileOperation复制文件,但是显示进度框上没有取消按钮 别的版本的机器则可以...不知道这个跟什么组件选择还有关系,还有就是ceshell.dll是怎么生成的 新手请教各位大虾!!…

查看全部问答>

电源变压器

本帖最后由 paulhyde 于 2014-9-15 09:34 编辑 …

查看全部问答>

我的新书《ARM Cortex-M0从这里开始》,已经上市

我的新书《ARM Cortex-M0从这里开始》已经出版,即将上市,希望大家多多支持。在这里先谢谢大家了。。。。。。。。。。。。。     前言和目录:     已经上市   北航:http://www.buaapress.com.cn/bookdetai ...…

查看全部问答>

电机控制 - 无刷直流 (BLDC) 电机主推产品

本帖最后由 dontium 于 2015-1-23 13:10 编辑 器件型号:RDK_BLDC                     DRV8312-C2-KIT (电机控制评估套件)    &nbs ...…

查看全部问答>

易電源學習心得

易電源學習心得剛剛參加了玩遊戲,體驗易電源。正如題所示,通過遊戲來體驗易電源的通俗學習方式,通過學習易電源,深深體會IT設計工程師的初衷,特別在介紹個單位器件時詳細說明。遊戲中,大大啓發我們對電子的好奇心。想想原來如此簡單的電路在操 ...…

查看全部问答>

ls -bash: ls: command not found .

原因:在设置环境变量时,编辑profile文件没有写正确,导致在命令行下ls等命令不能够识别。 解决方案: exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin…

查看全部问答>