小壁虎EFM32如何写Flash实现存储
概念
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。
FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
应用场景
很多时候我们程序中的有一些变量它不是每次都需要初始化的,例如:表计中的数据,需要记录上次断电的状态标志位等等…这些都是需要记忆功能来实现的,这时候就需要把这些需要保存的变量写进去Flash里面,下次上电唤醒之后,重新读取出来。
功能实现
const unsigned char ucWriteIn[12] = {'L','i','a','n','g','J','i','n','g','Y','i','_'};int main (void)
{ CHIP_Init();CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFRCO);
// CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFRCO); /* 外部高频晶振没焊接,改为使用内部晶振 *//* * 开启LE时钟,只要使用到低频外设,都需要开启该时钟 */CMU_ClockEnable(cmuClock_CORELE, true); CMU_ClockEnable(cmuClock_GPIO, true); /* 使能GPIO模块的时钟源 */ /* Ensure core frequency has been updated */SystemCoreClockUpdate();if(SysTick_Config(SystemCoreClockGet() / 1000)) while (1); /* 设置SysTick为1ms中断 */OrigrinatePeripherals_init(); WriteFlash(); //擦写Flashwhile(1);}
擦写函数:
void WriteFlash(void)
{//add a timerMSC_Init(); //初始化MSC,并使能AUXHFRCO__disable_irq(); //关闭总中断if(MSC_ErasePage((uint32_t *)0x0fe00000) == mscReturnOk) //擦除指定地址的数据{MSC_WriteWord((uint32_t *)0x0fe00000,ucWriteIn,12); //将数据写入指定地址。}MSC_Deinit();unsigned char *Point = (unsigned char *)0x0fe00000; //直接读取写入的地址位上的数据for(unsigned char i = 0; i < 8; i++) //读出的数据进行比对,和写入的是否一致!{if(*(Point + i) == ucWriteIn[i])continue;else{while(1); // error occur}}__enable_irq(); //开启总中断printf("point = %s \r\n",Point);
}
注意事项:
1、切记,在写Flash的过程中,不允许被任何东西打断,否则写入不成功;读数据没有这个要求。
2、写入的数据以4个字节为单位!
代码运行调试
总结
以上就是写Flash的过程,具体如何适合你的代码,需要你自己移植设计,很简单也很方便!
小壁虎EFM32如何写Flash实现存储相关推荐
- 小壁虎EFM32之ADC 采集电压
前言 最近在学习小壁虎EFM32芯片的使用,需要用ADC采集电压,学习之中,遇到一些小问题和需要注意的地方,现将其记录下来,避免以后自己再次踩坑和往后可以学而时习之:好了,进入正题. 代码 主函数: ...
- efm32芯片电压_小壁虎PK小蝴蝶(EFM32 vs STM32L)
近日因要使用低功耗MCU,故花了点时间来研究ARM cortex M系列的低功耗MCU,今天的主角,相信熟悉 ARM Cortex 单片机的大神们,一听这名字,就知道是谁了. -EnergyMicro ...
- 小壁虎(EFM32 Zero Gecko)开发板测量功耗
小壁虎(EFM32 Zero Gecko)是一款类似于Arduino的开发板,旨在更加方便快捷的开发嵌入式软硬件 开发环境下载链接Simplicity Studio 安装好软件后,插上开发板,再按照提 ...
- 采用NAND Flash设计存储设备的挑战在哪里?
对于搞电子设计的工程师而言,NAND Flash是再熟悉不过的东西了.在电子设计的时候,NAND Flash通常作为大容量存储介质,可以类比为PC系统中的磁盘.在电子设计领域,对于小容量存储,还可以采 ...
- 写flash,要不要加个判断?
相关文章 既生Flash,又何生EEPROM? 存储器Flash页.扇区.块的区别 这是我一个知识星球朋友的提问 刚开始我没有认真去思考这个问题,之后我仔细查了下资料,里面的内容还挺多. 先看看EMM ...
- Arduino ESP32 flash数据存储结构
Arduino ESP32 flash数据存储结构 分区表官方文档:<分区表> 想了解ESP32 flash数据存储结构需要从分区表开始了解.一点类似一台电脑上挂载的硬盘一样. 分区表保存 ...
- s3c4510 烧写flash
原创:s3c4510 烧写flash(sst39vf3201) 补齐了所有文件 参考其他资料 作者:wangkj 栏目:ARM技术 原创:S3C4510 烧写FLASH(SST39VF3201) 补齐 ...
- GPT-3有多强?伯克利小哥拿它写“鸡汤”狂涨粉
作者 | 文摘菌 出品|大数据文摘 GPT-3有多强大?可不止能写高考作文. 最近,一位美国小哥用GPT-3写的博客,就打败了一票人类作者,登上了新闻平台技术板块热榜第一?? 你没听错.这位小哥名叫L ...
- GPT-3有多强?伯克利小哥拿它写“鸡汤”狂涨粉,还成了Hacker News最火文章?!
大数据文摘出品 GPT-3有多强大?可不止能写高考作文. 最近,一位美国小哥用GPT-3写的博客,就打败了一票人类作者,登上了新闻平台技术板块热榜第一?? 你没听错.这位小哥名叫Liam Porr,来 ...
最新文章
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差
- 小电商的延时队列设计概要
- NPM酷库:dateformat 时间字符串格式化
- WORD如何取消编辑保护?
- buy low buy lower——伪思考
- paypal如何支付欧元_做印度最好的第三方四方支付网关-在线业务源码服务wefreepay一网打尽...
- java找出最高工资和下标_Java 8 lambda用于为每个部门选择最高薪资员工
- ueditor html模板,UEditor 编辑模板
- 采用晶体管作为电子元器件的计算机属于,采用晶体管作为电子元器件的计算机属于(...
- 【Tensorrt】Tensorrt C++部署YOLO v5报错记录 Version tag does not match. Note: Current Version: xxx, Serializ
- 数据分析师三个等级_数据分析课|这三个等级的数据分析师报考条件,一定是你需要的...
- WCF学习经验分享,如何更好地学习WCF?
- 无人机宽带自组网技术(随笔)
- strncpy()函数详解
- 记FTP链接:Server Reply: SSH-2.0-OpenSSH_8.0
- 《黑头人》(暂定)开发日志
- python中的调试器dbg
- 解决微信小程序ios端滚动卡顿的问题
- shared_from_this的使用
- pythonurllib库获取yahoo财经数据_用Python从Yahoo财经中获取历史数据
热门文章
- 查询mysql定时任务(事件)及事件的内容
- 文件管理“桌面”变成“Desktop”解决方法
- 云原生社区最新力作《深入理解 Istio》出版
- 【小松教你手游开发】【系统模块开发】图文混排 (在label中插入表情)
- C#里氏转换,子类赋值父类,父类强制转换成子类的理解
- 浅析组织结构与个人发展的关系
- centos7安装httpd service和启动时遇到的问题
- 计算机无法读光盘,光驱读不出光盘,教您电脑光盘不能被识别怎么解决
- python自动推送消息_Python自动接收微信群消息并推送相应的公众号文章
- 会议及作用篇--项目管理(二十一)终