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

📄 3_6_5.c

📁 魏小龙《MSP430系列单片机接口技术及系统设计实例》书中全部程序代码
💻 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 + -