?? target.c
字號(hào):
/****************************************Copyright (c)**************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: target.c
** Last modified Date: 2006-01-11
** Last Version: v2.0
** Descriptions: 目標(biāo)板特殊的代碼,包括異常處理程序和目標(biāo)板初始化程序
**
**------------------------------------------------------------------------------------------------------
** Created By: 陳明計(jì)
** Created date: 2003-06-05
** Version: v1.0
** Descriptions: 創(chuàng)建
**
**------------------------------------------------------------------------------------------------------
** Modified by: 甘達(dá)
** Modified date: 2006-01-06
** Version: v2.0
** Descriptions: 升級(jí)注釋
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#define IN_TARGET
#include "config.h"
/*********************************************************************************************************
** 函數(shù)名稱: FIQ_Exception
** 功能描述: 快速中斷異常處理程序,用戶根據(jù)需要自己改變程序
**
** 輸 入: 無(wú)
** 輸 出: 無(wú)
**
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 黃紹斌
** 日 期: 2005年11月11日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void FIQ_Exception(void)
{
while(1); // 這一句替換為自己的代碼
}
/*********************************************************************************************************
** 函數(shù)名稱: Timer0_Exception
** 功能描述: 定時(shí)器0中斷服務(wù)程序
** 輸 入: 無(wú)
**
** 輸 出: 無(wú)
**
** 全局變量: 無(wú)
** 調(diào)用模塊: OSTimeTick
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月2日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Timer0_Exception(void)
{
rSRCPND = 1 << 10;
rINTPND = rINTPND;
OSTimeTick();
}
/*********************************************************************************************************
** 函數(shù)名稱: Timer0Init
** 功能描述: 定時(shí)器0初始化
** 輸 入: 無(wú)
**
** 輸 出: 無(wú)
**
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2002年4月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Timer0Init(void)
{
// 定時(shí)器設(shè)置
rTCFG0 = 0; // 預(yù)分頻器0設(shè)置為250,取得200KHz
rTCFG1 = 1; // TIMER0再取1/4分頻,取得50KHz
rTCNTB0 = (PCLK / (4 * OS_TICKS_PER_SEC)) - 1;
rTCON = (1 << 1); // 更新定時(shí)器數(shù)據(jù)
rTCON = (1 << 0) | (1 << 3); // 啟動(dòng)定時(shí)器
}
/*********************************************************************************************************
** 函數(shù)名稱: VICInit
** 功能描述: 向量中斷控制器初始化
** 輸 入: 無(wú)
**
** 輸 出: 無(wú)
**
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月2日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void VICInit(void)
{
// 設(shè)置中斷控制器
rPRIORITY = 0x00000000; // 使用默認(rèn)的固定的優(yōu)先級(jí)
rINTMOD = 0x00000000; // 所有中斷均為IRQ中斷
VICVectAddr[10] = (uint32) Timer0_Exception;
rINTMSK = ~(1<<10); // 打開(kāi)TIMER0中斷允許
}
// 聲明外部圖片資源
#if DISP_BGPIC!=0
extern uint16 gImage_bliss[];
#endif
/*********************************************************************************************************
** 函數(shù)名稱: TargetInit
** 功能描述: 目標(biāo)板初始化代碼,在需要的地方調(diào)用,根據(jù)需要改變
** 輸 入: 無(wú)
** 輸 出: 無(wú)
**
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月2日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void TargetInit(void)
{
uint32 temp;
OS_ENTER_CRITICAL();
srand((uint32) TargetInit);
VICInit();
Timer0Init();
UART_Select(0);
UART_Init(115200);
GUI_Initialize(); // 初始化LCD顯示
#if DISP_BGPIC!=0
GUI_DispPic(0,0, 640,480, gImage_bliss); // 顯示桌面
#endif
rRTCCON = 0x00; // 禁止RTC接口(只允許RTC計(jì)數(shù)和讀數(shù))
temp = rBCDYEAR & 0xff;
if(temp > 0x99) // 年判斷
{
goto ChangeRTC;
}
if (temp == 0)
{
goto ChangeRTC;
}
temp = rBCDMON & 0x1F;
if (temp > 0x12) // 月判斷
{
goto ChangeRTC;
}
if (temp == 0)
{
goto ChangeRTC;
}
temp = rBCDDATE & 0x3F;
if (temp > 0x31) // 日判斷
{
goto ChangeRTC;
}
if (temp == 0)
{
goto ChangeRTC;
}
temp = rBCDHOUR & 0x3F;
if (temp > 0x24) // 時(shí)判斷
{
goto ChangeRTC;
}
temp = rBCDMIN & 0x7F;
if (temp > 0x59) // 分判斷
{
goto ChangeRTC;
}
temp = rBCDSEC & 0x7F;
if (temp > 0x59) // 秒判斷
{
goto ChangeRTC;
}
OS_EXIT_CRITICAL();
return;
ChangeRTC:
rRTCCON = 0x01; // 標(biāo)準(zhǔn)模式,RTC接口使能(允許寫(xiě))
rBCDYEAR = 0x05;
rBCDMON = 0x11;
rBCDDATE = 0x28;
rBCDDAY = 0x01; // 星期,MON:1 TUE:2 WED:3 THU:4 FRI:5 SAT:6 SUN:7
rBCDHOUR = 0x17;
rBCDMIN = 0x01;
rBCDSEC = 0x00;
rRTCCON = 0x00; // 禁止RTC接口(只允許RTC計(jì)數(shù)和讀數(shù))
}
/*********************************************************************************************************
** 以下為一些與系統(tǒng)相關(guān)的庫(kù)函數(shù)的實(shí)現(xiàn)
** 具體作用請(qǐng)ads的參考編譯器與庫(kù)函數(shù)手冊(cè)
** 用戶可以根據(jù)自己的要求修改
********************************************************************************************************/
/*********************************************************************************************************
** The implementations for some library functions
** For more details, please refer to the ADS compiler handbook and The library
** function manual
** User could change it as needed
********************************************************************************************************/
#include "rt_sys.h"
#include "stdio.h"
#pragma import(__use_no_semihosting_swi)
int __rt_div0(int a)
{
a = a;
return 0;
}
int fputc(int ch,FILE *f)
{
ch = ch;
f = f;
return 0;
}
int fgetc(FILE *f)
{
f = f;
return 0;
}
int _sys_close(FILEHANDLE fh)
{
fh = fh;
return 0;
}
int _sys_write(FILEHANDLE fh, const unsigned char * buf,
unsigned len, int mode)
{
fh = fh;
buf = buf;
len =len;
mode = mode;
return 0;
}
int _sys_read(FILEHANDLE fh, unsigned char * buf,
unsigned len, int mode)
{
fh = fh;
buf = buf;
len =len;
mode = mode;
return 0;
}
void _ttywrch(int ch)
{
ch = ch;
}
int _sys_istty(FILEHANDLE fh)
{
fh = fh;
return 0;
}
int _sys_seek(FILEHANDLE fh, long pos)
{
fh = fh;
pos = pos;
return 0;
}
int _sys_ensure(FILEHANDLE fh)
{
fh = fh;
return 0;
}
long _sys_flen(FILEHANDLE fh)
{
fh = fh;
return 0;
}
int _sys_tmpnam(char * name, int sig, unsigned maxlen)
{
name = name;
sig = sig;
maxlen = maxlen;
return 0;
}
void _sys_exit(int returncode)
{
returncode = returncode;
}
char *_sys_command_string(char * cmd, int len)
{
cmd = cmd;
len = len;
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -