?? main.c
字號(hào):
/*****************************************************************************\
* *
* Flash測(cè)試程序 *
* *
* 本程序測(cè)試Flash的擦除和編程。 *
* 程序?qū)⑽挥贗MAGE_ADDR處長(zhǎng)為IMAGE_SIZE字節(jié)的內(nèi)存區(qū)燒寫(xiě)到0地址處的Flash區(qū)。 *
* 因此該程序可將另一個(gè)程序燒寫(xiě)進(jìn)Flash,并使其在RESET時(shí)自動(dòng)運(yùn)行。 *
* 寫(xiě)入過(guò)程中LED1將閃爍,寫(xiě)入成功后則閃爍LED2。 *
* *
\*****************************************************************************/
#include "Flash.h"
#include "LED.h"
// TODO: 修改以下兩個(gè)宏的定義,以滿(mǎn)足不同的燒寫(xiě)需要
#define IMAGE_ADDR 0x0c100000
#define IMAGE_SIZE 0x00010000 // 64KB
void Main(void)
{
InitLED();
// if(Check_SST_39VF160()) // 檢查Flash芯片是否符合
{
int i;
for(i = 0; i < IMAGE_SIZE; i += SECTOR_SIZE) // 按扇區(qū)擦除目標(biāo)區(qū)域
{
Erase_One_Sector((WORD *)i);
if(!(i & 0x1fff))
SetLED1(2); // 閃爍LED1以表示操作正在進(jìn)行
}
for(i = 0; i < IMAGE_SIZE; i += 2) // 編程Flash,寫(xiě)入數(shù)據(jù)
{
Program_One_Word((WORD *)i,
*(WORD *)(IMAGE_ADDR + i));
if(!(i & 0x1fff))
SetLED1(2); // 閃爍LED1以表示操作正在進(jìn)行
}
// Verify
for(i = 0; i < IMAGE_SIZE; i += 2) // 驗(yàn)證寫(xiě)入的數(shù)據(jù)是否正確
{
if(*(WORD *)i != *(WORD *)(IMAGE_ADDR + i))
break;
}
if(i >= IMAGE_SIZE) // 寫(xiě)入正確?
{
SetLED1(0);
while(1) // 是,閃爍LED2表示成功
{
SetLED2(2);
for(i = 0; i < 4000000; i++);
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -