📄 3_6_5.c
字号:
#include <msp430x11x1.h>
char value; // 8-bit value to write to segment A
void write_SegA (char value); //函数声明
void copy_A2B (void); //函数声明
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
FCTL2 = FWKEY + FSSEL0 + FN0; // 定义FLASH时序发生器输入时钟
value = 0; // 将要写入的数为"0"
while(1)
{
write_SegA(value++); // 写段A
copy_A2B(); // 拷贝段A 到段 B
}
}
void write_SegA (char value)
{
char *Flash_ptr;
unsigned int i;
Flash_ptr = (char *) 0x1080; // 初始化指针
FCTL1 = FWKEY + ERASE; // 使能擦除操作
FCTL3 = FWKEY; // FLASH解锁
*Flash_ptr = 0; // 空写,启动擦除
FCTL1 = FWKEY + WRT; // 允许写操作
for (i=0; i<128; i++)
{
*Flash_ptr++ = value; // 循环写FLASH 128字节(一个信息段的长度)
}
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK; //写完了,锁定
}
void copy_A2B (void)
{
char *Flash_ptrA;
char *Flash_ptrB;
unsigned int i;
Flash_ptrA = (char *) 0x1080;
Flash_ptrB = (char *) 0x1000;
FCTL1 = FWKEY + ERASE; // 擦除允许
FCTL3 = FWKEY; // 解锁
*Flash_ptrB = 0; // 空写以启动擦除段B
FCTL1 = FWKEY + WRT; // 允许写
for (i=0; i<128; i++)
{
*Flash_ptrB++ = *Flash_ptrA++; // 读出段A的数据写到段B
}
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK; // 写完锁定
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -