本文主要是介绍MSP430系列单片机-读RAM数据烧写到Flash中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目一
从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; //写Flashwhile(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<NumToWrite;i++)value[i] = *RAM_ptr++;//将数组写入Flashfor (i=0;i<NumToWrite;i++)*Flash_ptr++ = value[i];while(FCTL3 & BUSY); //判断是否处于忙碌状态FCTL1 = FWKEY; //清楚WRT位FCTL3 = FWKEY + LOCK; //置位LOCK标志while(1){P4OUT ^= BIT2; //烧写完成,点亮绿指示灯__delay_cycles(1000000);}
}
仿真图:
这篇关于MSP430系列单片机-读RAM数据烧写到Flash中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!