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

📄 flash.c

📁 430单片机片内flash调试所用的程序 包括读和写
💻 C
字号:
#include "ss.h"
//写入int型的数字,发现flash每次一存储就是两个字节
//输入要写入的数值和地址.地址格式是0x4000....
//对flash存储器的擦除必须是一段一段的进行.
//不可能一个字节一个字节的擦除
//主存储器第n(0-119)段的地址(FE00H-n x 512)----(FFFFH-n x 512)
//取擦除地址从0x4400开始,即n=5D,到44FF.取写数据的地址从0x4410开始,然后向下写数据。
void write_para(void)
{
  
  unsigned int *Flash_ptr;                          // Flash pointer  
  Flash_ptr = (unsigned int *)0x4400;              // Initialize Flash pointer
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit,FWKEY=A5,写操作
  FCTL3 = FWKEY;                            // Clear Lock bit
  *Flash_ptr = 0;    
  //while(FCTL3&BUSY);        // Dummy write to erase Flash segment
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation 
  Flash_ptr = (unsigned int *)0x4410;
  *Flash_ptr =PV_bCyclesNum; 
   Flash_ptr = (unsigned int *)0x4412;
  *Flash_ptr =Main_bStatusFlag; 
   Flash_ptr = (unsigned int *)0x4414;
  *Flash_ptr =w_PAGEADDR; 
   Flash_ptr = (unsigned int *)0x4416;
  *Flash_ptr =w_BYTEADDR; 
  
  //while(FCTL3&BUSY);  // Write value to flash
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK; // Reset LOCK bit
  
}
//从某个地址addr取出取出一个char型的数字
unsigned int read_Segment(int addr)
{
  unsigned int value;
  unsigned int *Flash_ptr; 
  Flash_ptr = (unsigned int *)addr;
  value=*Flash_ptr;    
  return value;
}  

void read_para(void)
{
  
  PV_bCyclesNum=(read_Segment(0x4410)&0xFF);
  Main_bStatusFlag=(read_Segment(0x4412)&0xFF);
  w_PAGEADDR=read_Segment(0x4414);
  w_BYTEADDR=read_Segment(0x4416);
  
  
}
  //*******************************************
  
  

⌨️ 快捷键说明

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