📄 flash.c~rfc2e7d0.tmp
字号:
/* MSP430F1611 Flash块大小是512字节, 0xFFFFH--0XFE00H是16位,8位中断向量表外,
0xFDFFH--0XFC00H Seg1 0XFBFFH--0XFA00H Seg1 0XF9FFH--0xF800H Seg1
以此类推直到0x4000h 一共可以分为95个段
信息段A 0x10FF-0x1080h 信息段B 0x107fh-0x1000h 每个段128字节
*/
#include<MSP430x16x.h>
//#define FSEG_A 0x1080h //Information Seg1 Start
//#define FSEG_B 0x1000h //Information Seg2 Start
//#define FSEG1 0XFC00H //Seg 1 Start
//#define FSEG2 0XFA00H //Seg 2 Start
//#define FSEG3 0XF900H //Seg 3 Start
//#define FSEG4 0XF700H //Seg 4 Start
//#define FSEG5 0XF500H //Seg 5 Start
//#define FSEG6 0XF300H //Seg 6 Start
//#define FSEG7 0XF100H //Seg 7 Start
//#define FSEG8 0XEE00H //Seg 8 Start
//#define FSEG9 0XEC00H //Seg 9 Start
//#define FSEG10 0XEA00H //Seg 10 Start
//#define FSEG11 0XE900H //Seg 11 Start
//#define FSEG12 0XE700H //Seg 12 Start
//
//最大段数据为95 //参考MSP430F1611IPM英文手册P14
//
//RAM 区 10K 地址区间是:0x38ffh--0x1100
//整个ARM区间分 Extended 8k 与 Mirrored 2K
//0x38ffh--0x1900h
//0x18ffh--0x1100h
/* 说明;
在综全程序中将会使用FSEGxx--FSEGxx将指针指向相应的段空间
来用字或者字节形式读写
*/
void Init_Flash(void)
{
FCTL3=FWKEY;
FCTL1=FWKEY+ERASE;
while((FCTL3&BUSY)!=0) {};
}
/* 字节擦写 */
void Flash_Wb_Write(char *PtData,char *Bdata)
{
unsigned int i;
FCTL3=FWKEY;
FCTL1=FWKEY+WRT;
for(i=0;i<512;i++)
{
*PtData++ = *Bdata++;
}
return;
}
/* 字擦写 */
void Flash_Ww_Write(char *PtData,char *Bdata)
{
unsigned int i;
FCTL3=FWKEY;
FCTL1=FWKEY+WRT;
for(i=0;i<256;i++)
{
*(PtData+i) = *Bdata++;
}
}
void main(void)
{
unsigned int i;
char data[512];
WDTCTL=WDTPW+WDTHOLD;
for(i=0;i<512;i++)
data[i]=i;
Init_Flash();
Flash_Wb_Write((char *)0xb000,data);
Flash_Ww_Write((char *)0xb200,data);
while(1){ };
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -