📄 msp430_for_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 + -