历史上的今天
返回首页

历史上的今天

今天是:2024年08月31日(星期六)

2021年08月31日 | 【STM8S】 FLASH与EEPROM读写操作

2021-08-31 来源:eefocus

以下为FLASH操作:


#include "flash.h"

#include "stm8s_flash.h"

 

 

void Flash_Write_bytes(uint32_t Address , uint8_t * DataBuff,uint16_t length)

{

  uint16_t Count=0;

  for( Count=0 ; Count  {

    FLASH_ProgramByte_User(Address+Count,DataBuff[Count]);

  }

}

 

 

 

void FLASH_ProgramByte_User(uint32_t Address, uint8_t Data)

//将库函数中u16改为u32,否则当地址超过10000H时出错

{

    /* Check parameters */

    assert_param(IS_FLASH_ADDRESS_OK(Address));

    *(PointerAttr uint8_t*) (uint32_t)Address = Data;

}

注:写FLASH前需要解锁   


FLASH_Unlock(FLASH_MEMTYPE_PROG);  //FLASH解锁


以下为EEPROM操作:


#include "EEPROM.h"

#include "stm8s_flash.h"

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

* ==EEPROM初始化函数==

* FLASH_DeInit(); --> 复位EEPROM的寄存器值

* FLASH_Unlock(FLASH_MEMTYPE_DATA); --> 解锁 对 Data EEPROM memory 进行操作

* FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); --> 标准编程时间

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

void EEPROM_INIT(void)

{

FLASH_DeInit();

FLASH_Unlock(FLASH_MEMTYPE_DATA);

FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);

}

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

*  Function: Derive_EPWrite                                                                        

*  Object: 写EEPROM

*  输入: 头地址(0~2048)  数据指针  数据长

*  输出: 无                                         

*  备注:  2K EEPROM  不能超过

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

void Derive_EPWrite(u16 Adr, u8 *pData, u16 Len)

{

u8 *p;

//p指针指向EEPROM 对应的单元

p = (u8*)0x4000 + Adr;   

//解锁

FLASH_Unlock(FLASH_MEMTYPE_DATA);

//写数据

for( ; Len > 0; Len--)

{

Refresh_WWDG_Window(); //喂狗

*p++ = *pData++;

//等待写完成

while(!(FLASH_GetFlagStatus(FLASH_FLAG_EOP))); 

//加锁

FLASH_Lock(FLASH_MEMTYPE_DATA);

}

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

*  Function: Derive_EPRead                                                                         

*  Object: 读EEPROM

*  输入: 头地址(0~2048) 数据存放指针 数据长

*  输出: 无                                         

*  备注:  2K EEPROM

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

void Derive_EPRead(u16 Adr, u8 *pData, u16 Len)

{

u8 *p;

//p指针指向EEPROM 对应的单元

p = (u8*)0x4000 + Adr; 

//解锁

FLASH_Unlock(FLASH_MEMTYPE_DATA);

//读数据

for( ; Len > 0; Len--)

{

*pData++ = *p++;

Refresh_WWDG_Window(); //喂狗

}

//加锁EEPROM

FLASH_Lock(FLASH_MEMTYPE_DATA);

}


推荐阅读

史海拾趣

南京绿芯(Grenergy)公司的发展小趣事

对于电子消毒柜电路,网友可能的问题涉及多个方面,包括故障排查、日常维护、使用注意事项等。以下是一些可能的问题及详细回答:

一、故障排查类问题

1. 消毒柜通电后跳闸怎么办?

回答
消毒柜通电后跳闸可能是由电路短路引起的。首先,检查电源插座的火线(L)、零线(N)、地线(E)是否接线正确。其次,按照消毒柜上的线路图检查柜内线路接线是否正确,以及线路绝缘层是否被破坏(如被螺丝钻破、被金属边角划破等)。如果以上检查均正常,可能是电源板或继电器等部件损坏,建议联系专业维修人员进行检查和更换。

2. 消毒柜插上电源后无法启动,指示灯不亮怎么办?

回答
消毒柜无法启动且指示灯不亮,可能是由以下原因造成:电源插座无电或接触不良、熔断器烧坏、电源线与机体接触不良或断路、变压器烧坏或断路、电路板烧坏、继电器失灵等。解决方法包括检查电源插座、更换熔断器、检查并修复线路、更换电路板或继电器等。如果问题依然存在,建议联系专业维修人员进行检查。

二、日常维护类问题

1. 消毒柜需要定期清洁哪些部位?

回答
消毒柜需要定期清洁的部位包括柜体内部、层架、门封条以及散热孔等。清洁时,应使用柔软的布或海绵,避免使用腐蚀性强的清洁剂。同时,要注意不要将水溅入电路板等电子元件区域,以免造成短路或损坏。

2. 消毒柜的电源线应该如何保养?

回答
消毒柜的电源线应定期检查是否老化或破损,如有发现应及时更换。在使用过程中,应避免电源线过度弯折或受到重物压迫,以免影响其使用寿命和安全性。此外,电源线应远离高温、潮湿和腐蚀性强的环境,以确保其绝缘性能不受影响。

三、使用注意事项类问题

1. 消毒柜在使用时需要注意哪些安全问题?

回答
消毒柜在使用时需要注意以下安全问题:

  • 确保电源插座接地良好,避免漏电危险。
  • 不要将易燃易爆物品放入消毒柜内,以免发生火灾或爆炸。
  • 在使用过程中,应避免频繁开关柜门,以免影响消毒效果和能耗。
  • 使用完毕后,应及时关闭电源并拔掉插头,以节约能源和延长设备使用寿命。

2. 消毒柜是否可以一直插电使用?

回答
消毒柜是否可以一直插电使用取决于用户的使用情况和需求。如果用户经常使用消毒柜且没有其他特殊需求,可以保持电源连接;如果用户不经常使用消毒柜或者有其他特殊需求(如节约能源、避免设备老化等),建议在使用前提前通电,并在非使用状态下拔掉电源。此外,为了确保安全,插座应具备防水、防漏电等功能。

综上所述,对于电子消毒柜电路的问题,网友可能关注故障排查、日常维护和使用注意事项等方面。通过了解这些问题的解决方法和注意事项,可以更好地使用和维护消毒柜,确保其正常运行和延长使用寿命。

B+B SmartWorx公司的发展小趣事

B+B SmartWorx在成立初期便注重全球市场布局,特别是在美国和欧洲市场。通过多年的深耕细作,公司在这些地区建立了广泛的销售渠道和优秀的团队。其产品在美洲市场占据了58%的份额,欧洲市场占28%,其余地区占14%。这种全球布局不仅提升了公司的品牌知名度,也为其后续发展奠定了坚实的基础。

ALSC [Alliance Semiconductor Corporation]公司的发展小趣事

ALSC深知品质是企业的生命线。因此,公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重品牌建设,通过广告宣传、参加展会等方式提升品牌知名度和美誉度。这些举措使得ALSC在客户心中树立了良好的品牌形象。

BOWEI公司的发展小趣事

随着产品质量的不断提升和市场口碑的积累,ALSC开始积极拓展国内外市场。公司不仅在国内建立了完善的销售网络,还与多家国际知名企业建立了战略合作关系。通过与国际伙伴的紧密合作,ALSC成功将产品推向全球市场,进一步提升了公司的知名度和影响力。

Compostar Technology Co Ltd公司的发展小趣事

人才是企业发展的核心。Compostar Technology Co Ltd深知这一点,因此一直注重人才培养和团队建设。公司建立了完善的人才培训体系,为员工提供了广阔的职业发展空间。同时,公司还积极营造良好的企业文化氛围,激发员工的创新精神和团队合作精神。这些举措使得公司拥有一支高素质、高效率的员工队伍,为公司的持续发展提供了有力保障。

FILTRAN公司的发展小趣事

Compostar Technology Co Ltd公司自成立以来,一直致力于电子技术的研发与创新。在早期,公司凭借一款具有高效能耗比的电源管理芯片,成功打入了市场。随着技术的不断进步,公司逐渐将业务扩展到通信、智能家居和可穿戴设备等多个领域。公司不断投入研发资金,吸引了一批优秀的科研人才,成功研发出多款具有竞争力的产品,逐渐在电子行业中树立了良好的口碑。

问答坊 | AI 解惑

PLC/人机界面解密

本公司专业于工业自动化,承接自动化工程,销售自动化产品,各种最新自动化软件。为了让大家更深入地学习和维护好工业设备,本公司特设本店,为同行提供各种编程软件、解密软件。如有需要的,联系QQ;850935077。超宇工控特价供应:西门子s7-200全系列 ...…

查看全部问答>

移动电视接收器前端低成本方案

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 移动电视接收前端必须具有在远离发射器条件下工作所需的灵敏度,而且在有强信号时还能容忍过载。可被整集成到车载娱乐(ICE)系统,以及手机、便携式数字助理(PDA)、笔记本电脑等多种便携式电子 ...…

查看全部问答>

求一个NIOS II的串口通讯程序

小弟初学NIOS,想做一下串口通信,想找个程序参考一下,很简单的只要能接受和发送就行了,各位帮帮忙啊,先谢过了。…

查看全部问答>

关于组态王通信协议有地方不懂,帮忙解释一下。

协议中有一个地方说:    数据       定义     传送格式 1100 1000B   浮点读    43H 38H 1100 1001B   浮点写    43H 39H 我怎么也没看明白, 1 ...…

查看全部问答>

Tornado仿真器不可用!?

不知道为什么,我按照帮助中的Tutoiral做的,可是调用仿真器时失败,不知道为什么,那位高人可以指点?谢谢!…

查看全部问答>

在中国搞技术的人的悲哀

在中国搞技术是非常苦难的煎熬,时代很浮躁,没有人精心搞技术,除了生存,你会觉得无可奈何。国家只管GDP提高,才不会去考虑什么技术创新之类的东西,只要能把东西卖出去,哪怕是偷别人专利也在所不辞。以为支持房价快涨,铁路多修,经济就好了, ...…

查看全部问答>

有人有这篇文献吗?

Influence of magnet shape on cogging torque and back-emf waveform in permanent magnet machines…

查看全部问答>

Verilog RTL级与行为级描述区别

行为级描述目的是加快仿真速度,做法是尽量减少一个always块中要执行的语句数量,其结果不是为了综合RTL级描述是为了综合工具能够正确的识别而编写的代码,verilog中有一个可综合的子集,不同的综合工具支持的也有所不同…

查看全部问答>

调查一下,关于万利的EK-STM32F上面那个调试器性能

                                 想了解一下各位买了万利的EK-STM32F的开发板,板子上面附带的那个内嵌ST-LINK II仿真器性能如何?是否会出现 ...…

查看全部问答>

电子设计---参考书

实用电子电路设计制作例解.pdf…

查看全部问答>