完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 sunsf910402 于 2013-7-26 16:37 编辑
请问各位一下,单片机能否将收到的数据写入FLASH。举个例子,假设在单片机程序内存在变量A,当前A=0,在接收到外部给发送的数据后(如数字2),将该数字保存在A中(A=2),掉电后数据不丢失,下次开机A的数据依旧是接收到的数值(即A依旧等于2) 上述功能能否实现,如果能可否给出上述功能的代码示例在这里先谢谢各位了 |
|
相关推荐
12个回答
|
|
额。。这个没试过。但是好像可以。但是要用高电压驱动。430不是可以吗。那51 应该也可以吧。不过没用过不敢讲
|
|
|
|
当然可以,不是所有单片机都有flash编程这个功能的,但绝大多数单片机都有eeprom,在进行flash编程时要注意地址,别把程序擦除了,而编程eeprom就没这个问题,就保存一个数找个带eeprom 的就行了
|
|
|
|
强大啊啊啊啊,牛人啊
|
|
|
|
值得学习下,很少对FLASH进行操作
|
|
|
|
|
|
|
|
EEPROM写入确实比往flash写入方便多了,之前的自己做的那个小项目改成了往EEPROM里写入数据了,自己的开发经验还是不足啊 |
|
|
|
看大牛回复,顺便学习一下。
|
|
|
|
/*
* Erase Sector in Flash Memory * Parameter: adr: Sector Address * Return Value: 0 - OK, 1 - Failed */ int EraseSector (unsigned long adr) { unsigned long n; n = GetSecNum(adr); // Get Sector Number IAP.cmd = 50; // Prepare Sector for Erase IAP.par[0] = n; // Start Sector IAP.par[1] = n; // End Sector IAP_Call (&IAP.cmd, &IAP.stat); // Call IAP Command if (IAP.stat) return (1); // Command Failed IAP.cmd = 52; // Erase Sector IAP.par[0] = n; // Start Sector IAP.par[1] = n; // End Sector IAP.par[2] = CCLK; // CCLK in kHz IAP_Call (&IAP.cmd, &IAP.stat); // Call IAP Command if (IAP.stat) return (1); // Command Failed return (0); // Finished without Errors } /* * Program Page in Flash Memory * Parameter: adr: Page Start Address * sz: Page Size * buf: Page Data * Return Value: 0 - OK, 1 - Failed */ int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf) { unsigned long n; #if SET_VALID_CODE != 0 // Set valid User Code Signature if (adr == 0) { // Check for Vector Table n = *((unsigned long *)(buf + 0x00)) + *((unsigned long *)(buf + 0x04)) + *((unsigned long *)(buf + 0x08)) + *((unsigned long *)(buf + 0x0C)) + *((unsigned long *)(buf + 0x10)) + *((unsigned long *)(buf + 0x14)) + *((unsigned long *)(buf + 0x18)); *((unsigned long *)(buf + 0x1C)) = 0 - n; // Signature at Reserved Vector } #endif n = GetSecNum(adr); // Get Sector Number IAP.cmd = 50; // Prepare Sector for Write IAP.par[0] = n; // Start Sector IAP.par[1] = n; // End Sector IAP_Call (&IAP.cmd, &IAP.stat); // Call IAP Command if (IAP.stat) return (1); // Command Failed IAP.cmd = 51; // Copy RAM to Flash IAP.par[0] = adr; // Destination Flash Address IAP.par[1] = (unsigned long)buf; // Source RAM Address IAP.par[2] = 1024; // Fixed Page Size IAP.par[3] = CCLK; // CCLK in kHz IAP_Call (&IAP.cmd, &IAP.stat); // Call IAP Command if (IAP.stat) return (1); // Command Failed return (0); // Finished without Errors } |
|
|
|
小白老实说。。。。看得我好晕啊~!
|
|
|
|
为什么单片机中既有Flash又有EEPROM - 单片机实验 - 电子发烧友网 https://www.elecfans.com/lab/MCU/20161227464036.html
|
|
|
|
看不懂啊啊啊啊啊啊啊啊啊啊啊啊啊
|
|
|
|
看不懂啊啊啊啊啊啊啊啊 啊啊啊啊啊哈哈哈哈或或或
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:03 , Processed in 0.750209 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号