⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash操作,读取与回写.c

📁 包含了msp430单片机上的ADC、定时器A、定时器B、基础时钟、看门狗的初始化及中断程序。基本示例程序
💻 C
字号:
/**********************************************************/
//MSP430 Advanced Developping Components - [BaseComponents_44.C]
////Flash In-System Programming, Copy SegA to SegB
////->>> http://www.dutzm.cn
////->>> tel :(0)13130044096
/**********************************************************/
//MSP430高级实验开发组件 - Flash操作,读取与回写
//时钟设置:
////MCLK 550kHz - 900kHz.
//当前演示程序功能描述:
////MSP430片内的Flash操作,将SEGA中内容复制到SEGB中
/*********************************************************/

#include <msp430x14x.h>

unsigned char  value;
void  write_SegA (unsigned char value);
void  copy_A2B (void);

void main(void) {
	WDTCTL = WDTPW + WDTHOLD;		//关闭看门狗
	
	FCTL2 = FWKEY + FSSEL0 + FN0;		//MCLK/2作为Flash操作时钟
	value = 0;
	
	while(1) {
		write_SegA(value++);		//向Flash的A段写入数据
		copy_A2B();			//将A段数据写入B段
		_NOP();				//加入断点观察数据
	}
}

void write_SegA (unsigned char value) {
	unsigned char *Flash_ptr;		//Flash操作用指针
	
	unsigned int i;
	Flash_ptr = (unsigned char *) 0x1080;	//初始化指针
	FCTL1 = FWKEY + ERASE;			//允许擦除数据
	FCTL3 = FWKEY;				//清除锁定
	
	*Flash_ptr = 0;				//写入数据
	
	FCTL1 = FWKEY + WRT;			//设置WRT,向Flash中写入
	
	for (i=0;i<128;i++) {
		*Flash_ptr++ = value;		//向Flash中写入
	}
	
	FCTL1 = FWKEY;				//清除WRT写入标志位
	FCTL3 = FWKEY + LOCK;			//锁定Flash写入
}


void copy_A2B (void) {
	unsigned char *Flash_ptrA;		//段A指针
	unsigned char *Flash_ptrB;		//段B指针
	
	unsigned int i;
	Flash_ptrA = (unsigned char *) 0x1080;		//初始化段A指针
	Flash_ptrB = (unsigned char *) 0x1000;		//初始化段A指针
	FCTL1 = FWKEY + ERASE;			//允许擦除数据
	FCTL3 = FWKEY;				//清除锁定
	*Flash_ptrB = 0;			//写入数据
	FCTL1 = FWKEY + WRT;			//设置WRT,向Flash中写入
	
	for (i=0;i<128;i++) {
		*Flash_ptrB++ = *Flash_ptrA++;	//复制数据
	}

	FCTL1 = FWKEY;				//清除WRT写入标志位
	FCTL3 = FWKEY + LOCK;			//锁定Flash写入
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -