关于MSP430-Flash超过64K的读写操作方法
来源:互联网 发布:比特币交易 知乎 编辑:程序博客网 时间:2024/05/29 19:46
关于MSP430-Flash超过64K的读写操作方法
微控论坛原创专贴 作者:微控论坛特约嘉宾 Qiaohaikun
下面例子是Qiaohaikun先生几年前一直用在MSP430FG4618...使用过的,一直都挺好使。希望在此分享出来能帮助到有需要的网友们。同样,希望各网友们如有精品程序例子的话同样可以发贴到微控论坛来。人人为我,我为人人!
下面例子是Qiaohaikun先生几年前一直用在MSP430FG4618...使用过的,一直都挺好使。希望在此分享出来能帮助到有需要的网友们。同样,希望各网友们如有精品程序例子的话同样可以发贴到微控论坛来。人人为我,我为人人!
运行代码 复制代码
- #include "msp430xG46x.h"
- void WriteFlashErrorNum(void);
- //----------------------------------------------------------------------
- //功能:从flash中读出数据,只需给出首地址和取出数据的数量
- //日期:2006.12.13
- //输入:waddr为flash的地址,length为数据长度
- //输出:无
- //----------------------------------------------------------------------
- void ReadFlash(unsigned long int waddr,unsigned int length)
- {
- unsigned char i=0;
- if(FlashMangleFlag==0)
- {
- while(FCTL3 & BUSY);
- if(length>64) length=64;
- while(length--)
- {
- Internal_flashdata[i++]=__data20_read_char(waddr++);
- }
- }
- }
- //----------------------------------------------------------------------
- //功能:段擦除;
- //日期:2006.12.13
- //输入:waddr为flash的地址,
- //输出:无
- //----------------------------------------------------------------------
- //void EraseFlashOneBlock(unsigned long int waddr)
- void EraseFlash(unsigned long int waddr)
- {
- if(FlashMangleFlag==0)
- {
- if((waddr>=0x1f400) && (waddr<0x20000))
- {
- while(FCTL3 & BUSY);
- _DINT();
- FCTL2 = FWKEY + FSSEL1 + FN4;
- FCTL3 = FWKEY; // Clear Lock bit
- FCTL1 = FWKEY + ERASE; // Set Erase bit
- __data20_write_char(waddr,0); // Dummy write to erase Flash segment
- while(FCTL3 & BUSY);
- FCTL3 = FWKEY + LOCK; // Reset LOCK bit
- _EINT();
- }
- }
- }
- //----------------------------------------------------------------------
- //功能:将数据写入flash;
- //日期:2006.12.13
- //输入:waddr为flash的地址,length为数据长度,*buf为指向数据的指针
- //输出:无
- //----------------------------------------------------------------------
- unsigned char WriteFlash(unsigned long int waddr,unsigned char *buf,unsigned int length)
- {
- unsigned int i;
- unsigned char temp,ErrorFlag = 0;
- if(FlashMangleFlag==0)
- {
- if((waddr>=0x1f400) && (waddr<0x20000))
- {
- while(FCTL3 & BUSY);
- _DINT();
- FCTL2 = FWKEY + FSSEL1 + FN4;
- FCTL3 = FWKEY; // Clear Lock bit
- FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
- for(i=0;i<length;i++)
- {
- __data20_write_char(waddr,*buf); // Write value to flash
- temp = __data20_read_char(waddr); // Read one byte
- if(temp!=(*buf)) // 判断读出的数据和写入的数据是否相当
- {
- ErrorFlag = 1; //写入flash操作错误标志
- ErrorFlashNum ++ ;
- }
- waddr++;buf++;
- }
- while(FCTL3 & BUSY);
- FCTL1 = FWKEY;
- FCTL3 = FWKEY + LOCK; // Reset LOCK bit
- _EINT();
- if(ErrorFlag == 1) WriteFlashErrorNum();
- }
- }
- return ErrorFlag;
- }
0 0
- 关于MSP430-Flash超过64K的读写操作方法
- MSP430 FLASH读写
- MSP430的Flash存储器
- MSP430 flash的操作
- MSP430的Flash操作
- MSP430读写片内FLASH保存数据
- MSP430读写片内FLASH保存数据
- 配置超过64K方法的应用程序
- 关于build方法数超过 64K 的应用的问题
- 关于Msp430 Flash型单片机内部Flash的操作——即片内Flash的擦除、写入、读取
- 关于Android 方法数超过64K的解决办法,终究要知道
- MSP430单片机学习(一)——Flash读写操作
- SYD8801操作内部flash空间(【3K空间操作方法】 【24K空间操作方法】)
- 解决Ruby的Oracle接口读写超过4K字符串的问题
- 5)MSP430的Flash存储器
- 关于MSP430的学习总结
- 关于msp430的BSL下载
- 使用ANT编译超过64K方法的Android工程
- BZOJ[1750/3384]: [Usaco2005 qua]Apple Catching
- JZOJ 4586 Ned 的难题【NOIP2016模拟7.7】
- 测试硬盘IO性能的心酸历程
- 机器学习基础(林軒田)笔记之十
- jQuery 知识点总结
- 关于MSP430-Flash超过64K的读写操作方法
- 1020: 部分A+B
- ionic navbutton有时候会消失的bug
- Ubuntu12.04-root权限的获取与退出
- ZZULIOJ 1912: 小火山的爱情密码 (尺取法)
- Oracle 的网络
- Mathematica数据处理(4)
- 内存数据库
- 断点下载总结