📄 main.c
字号:
/*****************************************************************************\
* *
* Flash测试程序 *
* *
* 本程序测试Flash的擦除和编程。 *
* 程序将位于IMAGE_ADDR处长为IMAGE_SIZE字节的内存区烧写到0地址处的Flash区。 *
* 因此该程序可将另一个程序烧写进Flash,并使其在RESET时自动运行。 *
* 写入过程中LED1将闪烁,写入成功后则闪烁LED2。 *
* *
\*****************************************************************************/
#include "Flash.h"
#include "LED.h"
// TODO: 修改以下两个宏的定义,以满足不同的烧写需要
#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) // 按扇区擦除目标区域
{
Erase_One_Sector((WORD *)i);
if(!(i & 0x1fff))
SetLED1(2); // 闪烁LED1以表示操作正在进行
}
for(i = 0; i < IMAGE_SIZE; i += 2) // 编程Flash,写入数据
{
Program_One_Word((WORD *)i,
*(WORD *)(IMAGE_ADDR + i));
if(!(i & 0x1fff))
SetLED1(2); // 闪烁LED1以表示操作正在进行
}
// Verify
for(i = 0; i < IMAGE_SIZE; i += 2) // 验证写入的数据是否正确
{
if(*(WORD *)i != *(WORD *)(IMAGE_ADDR + i))
break;
}
if(i >= IMAGE_SIZE) // 写入正确?
{
SetLED1(0);
while(1) // 是,闪烁LED2表示成功
{
SetLED2(2);
for(i = 0; i < 4000000; i++);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -