?? target.c
字號:
#include "..\inc\target.h"
//#include "..\ucos-ii\ucos_ii.h" /* uC/OS interface */
/********************************************************************************************************
* ARMTargetInit *
* *
* Description: This function initialize an ARM Target board *
* *
* Argument : none *
********************************************************************************************************/
void ARMTargetInit(void) {
//配置Cache
rSYSCFG=SYSCFG_8KB; //使用8K字節的指令緩存
rNCACHBE0=((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
Port_Init(); //初始化端口
Led_Disp();
ChangePllValue(PLL_M ,PLL_P ,PLL_S ); //設置CPU頻率為48M
Uart_Init(0,115200); //設置串口0的速率為115200bps
Uart_Select(0); //選擇串口0
ARMDisableInt(); //禁止中斷
ARMInitInterrupts(); //初始化中斷,設置中斷服務程序
Delay(0); //調整延時
}
/********************************************************************************************************
* ARMTargetStart *
* *
* Description: This function start the ARM target running *
* *
* Argument : none *
********************************************************************************************************/
void ARMTargetStart(void) {
ARMInitTimers(); //配置時鐘0相關寄存器
ARMInstallSystemTimer(); //時鐘0中斷使能
// ARMStartTimer(); //時鐘0開始,最好在系統的第一個任務調用,不推薦在這里調用
}
void ARMInitInterrupts(void)
{
// Non-vectored,IRQ disable,FIQ disable
rINTCON=0x0;
// All=IRQ mode
rINTMOD=0x0;
// All interrupt is masked.
rINTMSK=BIT_GLOBAL;
//set interrupt vector routine
// pISR_RESET //reserved
pISR_UNDEF = (unsigned) DebugUNDEF;
pISR_SWI = (unsigned) DebugSWI;
pISR_PABORT = (unsigned) DebugPABORT;
pISR_DABORT = (unsigned) DebugDABORT;
// pISR_RESERVED = (unsigned) BreakPoint; //not used
// pISR_IRQ = (unsigned) 0; //reserved
pISR_FIQ = (unsigned) DebugFIQ;
pISR_ADC= (unsigned) BreakPoint;
pISR_RTC= (unsigned) BreakPoint;
pISR_UTXD1= (unsigned) BreakPoint;
pISR_UTXD0= (unsigned) BreakPoint;
pISR_SIO= (unsigned) BreakPoint;
pISR_IIC= (unsigned) BreakPoint;
pISR_URXD1= (unsigned) BreakPoint;
pISR_URXD0= (unsigned) BreakPoint;
pISR_TIMER5= (unsigned) BreakPoint;
pISR_TIMER4= (unsigned) BreakPoint;
pISR_TIMER3= (unsigned) BreakPoint;
pISR_TIMER2= (unsigned) BreakPoint;
pISR_TIMER1= (unsigned) BreakPoint;
// pISR_TIMER0= (unsigned) BreakPoint;
pISR_UERR01= (unsigned) BreakPoint;
pISR_WDT= (unsigned) BreakPoint;
pISR_BDMA1= (unsigned) BreakPoint;
pISR_BDMA0= (unsigned) BreakPoint;
pISR_ZDMA1= (unsigned) BreakPoint;
pISR_ZDMA0= (unsigned) BreakPoint;
pISR_TICK= (unsigned) BreakPoint;
// pISR_EINT4567= (unsigned) OSEINT4567ISR;
pISR_EINT3= (unsigned) BreakPoint;
pISR_EINT2= (unsigned) BreakPoint;
pISR_EINT1= (unsigned) BreakPoint;
pISR_EINT0= (unsigned) BreakPoint;
pISR_TIMER0= (unsigned) TickHandler;
}
int ARMRequestSystemTimer(void *tick, const unsigned char *str)
{
return 1;
}
//Initialize timer that is used OS.
void ARMInitTimers(void)
{
//dead zone=0, pre0= 150
rTCFG0= 0x00000095;
//all interrupt, mux0= 1/16
rTCFG1= 0x00000003;
//set T0 count
rTCNTB0= _CLOCK;
//update T0
rTCON= 0x00000002;
}//ARMnitTimers
//start system timer0
void ARMStartTimer(void)
{
//autoreload and start
rTCON = 0x9;
}
// enable the interrupt.
void ARMInstallSystemTimer(void)
{
rINTCON = 0x1; // Vectored mode, IRQ disable, FIQ disable
rINTMOD = 0x0; // All=IRQ mode
//Non maksed TIMER0
rINTMSK=~( BIT_TIMER0 | BIT_GLOBAL); //Default value=0x7ffffff
rI_ISPC = 0xffffffff; // Clear all interrupt pend
}//ARMInstallSystemTimer
void BreakPoint(void) {
Uart_Printf("Enter BreakPoint");
while(1) {
Led_Set(0x7);
Delay(1000);
Led_Set(0x0);
Delay(1000);
}//while
}//BreakPoint
void DebugUNDEF(void) {
Uart_Printf("Enter DebutUNDEF");
// while(1);
// {
// Led_Set(0x7);
// Delay(1000);
// Led_Set(0x0);
// Delay(1000);
// }//while
}
void DebugSWI(void) {
Uart_Printf("Enter DebutSWI");
while(1) {
Led_Set(0x7);
Delay(1000);
Led_Set(0x0);
Delay(1000);
}//while
}
void DebugPABORT(void) {
Uart_Printf("Enter DebutPABORT");
while(1);
//{
// Led_Set(0x7);
// Delay(1000);
// Led_Set(0x0);
// Delay(1000);
// }//while
}
void DebugDABORT(void) {
// unsigned long l;
Uart_Printf("Enter DebutDABORT");
// while(1);
//{
// Led_Set(0x7);
// Delay(1000);
// Led_Set(0x0);
// Delay(1000);
//}//while
}
void DebugFIQ(void) {
Uart_Printf("Enter DebutFIQ");
while(1) {
Led_Set(0x7);
Delay(1000);
Led_Set(0x0);
Delay(1000);
}//while
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -