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

📄 44btest.c

📁 本程序是FS44B0XII V3.00开发板C57和G57液晶屏套件程序
💻 C
字号:
#include "def.h"
#include "44b.h"
#include "utils.h"

#include "ads7843.h"

#include "lcd.h"
#include "lcdlib.h"
#include "glib.h"
#include "Bmp_c256.h"

#define	BAUD_RATE	115200

void HaltUndef(void)
{
    printf("Undefined instruction exception!!!\n");
    while(1)
    {
    	LedSet( 0x00 )	;		//
    	Delay(500) ;		//
    	LedSet( 0x0f )	;		//
    	Delay(500) ;		//
    }
}

void HaltSwi(void)
{
    printf("SWI exception!!!\n");
    while(1)
    {
    	LedSet( 0x00 )	;		//
    	Delay(500) ;		//
    	LedSet( 0x0f )	;		//
    	Delay(500) ;		//
    }
}

void HaltPabort(void)
{
    printf("Pabort exception!!!\n");
    while(1)
    {
    	LedSet( 0x00 )	;		//
    	Delay(500) ;		//
    	LedSet( 0x0f )	;		//
    	Delay(500) ;		//
    }
}

void HaltDabort(void)
{
    printf("Dabort exception!!!\n");
    while(1)
    {
    	LedSet( 0x00 )	;		//
    	Delay(500) ;		//
    	LedSet( 0x0f )	;		//
    	Delay(500) ;		//
    }
}

void Isr_Init(void)
{
    pISR_UNDEF=(unsigned)HaltUndef;
    pISR_SWI  =(unsigned)HaltSwi;
    pISR_PABORT=(unsigned)HaltPabort;
    pISR_DABORT=(unsigned)HaltDabort;

    rINTMSK = 0x7ffffff;	  // All interrupt is masked.

	rINTCON = 0x5 ;		//无向量中断模式
	rINTMOD = 0x0 ;		//All=IRQ mode
}

void LedDisp(void)
{
	LedSet(0x08);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x04);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x02);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x01);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x02);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x04);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x08);		//LED点亮/熄灭状态设置
	Delay(150);
	LedSet(0x00);		//LED点亮/熄灭状态设置
}

void Main(void)
{
	U32 m ;
	U16 i, sel;		

	SystemClockInit();
	TimerInit(1000);
	MemCfgInit();
	PortInit();
	Isr_Init();
	
	CacheDisable();
	CacheFlush();
	CacheEnable();

	SerialSwitch(0);
	SerialChgBaud(BAUD_RATE);
	
	ShowBootInfo();

	printf("Build  date : %s--%s\n", __DATE__, __TIME__);
	printf("Serial baud : %d\n", BAUD_RATE);
	printf("CPU clock is %dHz, Master clock is %dHz\n", GetCpuClock(), GetMasterClock());

    Lcd_Init(MODE_COLOR);
    Lcd_DispON();
    Lcd_BlackLight_ON() ;
    Glib_Init(MODE_COLOR);
	Lcd_C256_Bmp( 0, 0, 320, 320, acucdragon_320_320_C256 ) ;		//paint bmp
	
		
	while( 1 )
	{
		putch('\n');
		for(i=0; cmd_menu[i].test_func; i++)
		{
			printf("%d : %s\n", i, cmd_menu[i].string);
		}

		m = 20000000 ;
		while( !kbhit() && (m>1)  ) m-- ;

		if( m>1 )
		{
			LedSet(GetKeyStatus());
		
			sel = Uart_GetIntNum_GJ() ;
			
			printf( "\t you select is %d\n", sel );
			
			if(sel<i)
				(*cmd_menu[sel].test_func)();
		}
		else
		{
			ADS7843_C256LCD_Test() ;
		}
		
	}
	
}

#define	DFT_DOWNLOAD_ADDR	0x0c400000

U32 download_addr, download_len;

//中断入口内容不可确定,不要用中断
void LoadFromUart(void)
{
	int i, size;
	unsigned short dnCS, CheckSum;
	unsigned char *buf;
	unsigned char RxTmp[8];
	void (*fun)(void);
	
	download_addr = DFT_DOWNLOAD_ADDR;
	
	buf = (unsigned char *)download_addr;
	
	printf("Now download file from uart0 to 0x%x...\n", download_addr);
	
	i = 0;
	while(i<4)
		RxTmp[i++] = getch();
    
    i = 0;
    size = *(unsigned long *)RxTmp - 4;
	while(i<size)
		buf[i++] = getch();
	
	download_len = size-2;	
	
	dnCS = (buf[size-1]<<8)|buf[size-2];
	CheckSum = 0;
	for(size -= 3; size>=0; size--)
		CheckSum += buf[size];
	if(dnCS!=CheckSum) {
//		printf("get CS=0x%08x, cal CS=0x%08x\n", dnCS, CheckSum);
		puts("\nCheckSum error!\n");
		download_len = 0;
	} else {
		printf("\nReceived %x bytes success\n", download_len);
		puts("Do you want to run it?");
		if(getyorn()) {
			fun = (void (*)(void))download_addr;		
			CacheDisable();
			CacheFlush();
			(*fun)();
		}
	}
	
	return;
}

⌨️ 快捷键说明

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