msp430_for_flash.txt

来自「对msp430内部的flash进行在线编程,可以用于对系统的一些重要信息进行掉电」· 文本 代码 · 共 55 行

TXT
55
字号
对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 + =
减小字号Ctrl + -
显示快捷键?