⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430_for_flash.txt

📁 对msp430内部的flash进行在线编程,可以用于对系统的一些重要信息进行掉电保存。
💻 TXT
字号:
对msp430内部的flash进行在线编程,可以用于对系统的一些重要信息进行掉电保存。 
对flash的写入操作分为字写入(Byte/word write)和段写入(Block write),这里只讨论字写入,段写入可以参照ti的例程。  
flash编程的子程序 

//擦除一段flash 
void FlashErase(uint *addr){ 
_DINT(); 
FCTL3 = FWKEY; 
FCTL1 = FWKEY+ERASE; //Erase 
*addr = 10; 
_EINT(); 
} 

//向Flash写一个uint 
void FlashWriteInt(uint *addr, uint data){ 
_DINT(); 
FCTL1 = FWKEY+WRT; 
*addr = data; 
_EINT(); 
} 

//向Flash写一个uchar 
void FlashWriteUchar(uchar *addr, uchar data){ 
_DINT(); 
FCTL1 = FWKEY+WRT; 
*addr = data; 
_EINT(); 
} 

//向Flash写一个float 
void FlashWriteFloat(uint *addr,float data){ 
uint *pdata; 
pdata = (uint*)&data; 
FlashWriteInt(addr,*pdata); 
pdata++; 
addr++; 
FlashWriteInt(addr,*pdata); 
}  
定义及调用(以info-flash为例) 

//在info-flash中定义三个数据(初始化) 
#pragma memory=constseg(INFO) 
uchar a=1; 
uint b=2; 
float c=3; 
#pragma memory=default 

//在程序中调用上面的子程序改变这三个数据 
WDTCTL = WDTPW + WDTHOLD;//为安全起见,对flash进行编程期间,应禁止看门狗; 
FlashErase((uint*)&a); 
FlashWriteUchar((uchar*)&a,6); 
FlashWriteInt((uint*)&b,7); 
FlashWriteFloat((uint*)&c,5.6);  
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -