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

📄 main.c

📁 用于测试基于英蓓特s3c44b0的flash擦写
💻 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 + -