📄 flash操作,读取与回写.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 + -