从RAM地址0x0200中读取一个long数据,并烧写至地址为0x1800的Flash中。
代码:
#include“io430.h”
void main(void)
{
//初始化RAM信息段的指针
unsigned long * RAM_ptr = (unsigned long *) 0x0200;
//初始化Flash信息段的指针
unsigned long * Flash_ptr = (unsigned long *) 0x1800;
//寄存数据的变量
unsigned long value;
WDTCTL = WDTPW + WDTHOLD; //封闭看门狗
P4DIR |= BIT2; //设置P4.2为输出端口,衔接LED作为指示
while(FCTL3 & BUSY); //判别是否处于繁忙状况
FCTL3 = FWKEY; //铲除LOCK标志
FCTL1 = FWKEY + ERASE; //挑选段擦除,置位ERASE
*Flash_ptr = 0; //将指针所指向的地址写0,发动擦除
FCTL1 = FWKEY + BLKWRT; //写答应,长字
//读RAM信息到value变量
value = *RAM_ptr;
*Flash_ptr = value; //写Flash
while(FCTL3 & BUSY); //判别是否处于繁忙状况
FCTL1 = FWKEY; //清楚WRT位
FCTL3 = FWKEY + LOCK; //置位LOCK标志
while(1)
{
P4OUT ^= BIT2; //烧写完结,点亮绿指示灯
__delay_cycles(1000000);
}
}
标题二
从RAM地址0x0200开端读取一个长度为8的字符数组,并烧写至地址为0x1800的Flash中。
#include“io430.h”
# define NumToWrite 8
void main(void)
{
//初始化RAM信息段的指针
unsigned char * RAM_ptr = (uint8_t *) 0x0200;
//初始化Flash信息段的指针
unsigned char * Flash_ptr = (uint8_t *) 0x1800;
//寄存数据的变量
unsigned char value[NumToWrite];
int i;
WDTCTL = WDTPW + WDTHOLD; //封闭看门狗
P4DIR |= BIT2; //设置P4.2为输出端口,衔接LED作为指示
while(FCTL3 & BUSY); //判别是否处于繁忙状况
FCTL3 = FWKEY; //铲除LOCK标志
FCTL1 = FWKEY + ERASE; //挑选段擦除,置位ERASE
*Flash_ptr = 0; //将指针所指向的地址写0,发动擦除
FCTL1 = FWKEY + BLKWRT; //写答应,长字
//读RAM信息到value变量
for (i=0;i
value[i] = *RAM_ptr++;
//将数组写入Flash
for (i=0;i
*Flash_ptr++ = value[i];
while(FCTL3 & BUSY); //判别是否处于繁忙状况
FCTL1 = FWKEY; //清楚WRT位
FCTL3 = FWKEY + LOCK; //置位LOCK标志
while(1)
{
P4OUT ^= BIT2; //烧写完结,点亮绿指示灯
__delay_cycles(1000000);
}
}