?? main.c
字號:
/*-----------------------------------------------------*
*工 程 名:Flash.prj *
*硬件連接:無 *
*功 能: *
* 1.等待接收N+1個數,并放入N和data數組中 *
* 2.擦除以addr為首地址的Flash一頁,將N個數據寫入 *
* 3.從以addr為首址的Flash區讀取N個數據,串口發送 *
*說 明: *
* 1.與Visual Basic 6.0 程序Flash_Test.vbp聯合運行 *
* 2.擦/寫函數中用來暫存寫入或擦除程序的首末地址的 *
* 變量pbase,pend;用來暫存待寫入或擦除的Flash首 *
* 地址faddr;用來存放寫入的數據個數N和寫入的數據 *
* data[]必須在main函數中定義,否則將出錯 *
* 3.調用擦/寫子程序之前先將待擦/寫頁后一頁開始的 *
* 所有區域寫保護 *
*------------------------------------------------------*
/*[頭文件]*/
#include "SCI.h" //串行通信子程序頭文件
#include "GP32C.h" //包含頭文件
//函數聲明
extern void SCIInit(void); //串行口初始化子程序
extern void EarseFlash(unsigned int addr);
extern void WriteFlash(unsigned int addr);
//內存變量聲明
unsigned char N,data[64]; //N:寫入FLASH的數據個數
//data:將寫入flash的數據
unsigned int pbase,pend,faddr;
//存放將寫入或擦除的首地址
//主程序
void main()
{
unsigned char i;
unsigned char *p;
SCIInit(); //調串行口初始化子程序
//主循環開始
while(1)
{
SCISend1(86); //發送握手信號86
//等待接收一個字節的握手信號
if(SCIRe1(p)!=56) //是否是56?
continue; //否,繼續握手
//等待接收寫入的數據個數(N<=128)并存放到N中
SCIReN(1,data);
N=data[0];
//等待接收N個字節的數據并存放到以data數組中
SCIReN(N,data);
//調用EarseFlash()程序之前要保護后一頁之后的區域
//如:EarseFlash(0x8000),則要保護的為$8100后的區域
FLBPR=0b00000010; //保護$8100~$FFFF的FLASH區域
EarseFlash(0x8000); //擦除0x8000為始址的一個頁
//調用WriteFlash()程序之前要保護后一頁之后的區域
//如:WriteFlash(0x8000),則要保護的為$8100后的區域
FLBPR=0b00000010; //保護$8100~$FFFF的FLASH區域
WriteFlash(0x8000); //將數據寫入flash
//讀出flash中的數據發給pc機比較
SCISendN(N,(unsigned char *)0x8000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -