📄 44btest.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 + -