📄 target.c
字号:
#include "..\inc\target.h"
#include "ucos_ii.h" /* uC/OS interface */
/****************************************************************************
【功能说明】 This function initialize an ARM Target board
****************************************************************************/
void ARMTargetInit(void)
{
CacheEnable();
MemCfgInit();
Port_Init(); //初始化端口
Uart_Select(0); //选择串口0
Uart_Init(115200); //设置串口0的速率为115200bps
ARMInitInterrupts(); //初始化中断,设置中断服务程序
}
/****************************************************************************
【功能说明】 This function start the ARM target running
****************************************************************************/
void ARMTargetStart(void)
{
ARMInitTimers(); //配置时钟0相关寄存器
ARMInstallSystemTimer(); //时钟0中断使能
}
void ARMInitInterrupts(void)
{
rINTCON=0x0; //IRQ disable,FIQ disable
rINTMOD=0x0; //All IRQ mode
rINTMSK=BIT_GLOBAL; //All interrupt is masked.
rEXTINT |= 0x40; //EINT1为上升沿触发
/* 设置中断服务程序入口地址 */
// pISR_RESET = //not used,reserved
pISR_UNDEF = (unsigned) DebugUNDEF;
pISR_SWI = (unsigned) DebugSWI;
pISR_PABORT = (unsigned) DebugPABORT;
pISR_DABORT = (unsigned) DebugDABORT;
// pISR_RESERVED = //not used,reserved
// pISR_IRQ = //not used,reserved
pISR_FIQ = (unsigned) DebugFIQ;
pISR_EINT0 = (unsigned) BreakPoint;
pISR_EINT1 = (unsigned) BreakPoint;
pISR_EINT2 = (unsigned) BreakPoint;
pISR_EINT3 = (unsigned) BreakPoint;
//pISR_EINT4567 = (unsigned) OSEINT4567ISR;
pISR_TICK = (unsigned) BreakPoint;
pISR_ZDMA0 = (unsigned) BreakPoint;
pISR_ZDMA1 = (unsigned) BreakPoint;
pISR_BDMA0 = (unsigned) BreakPoint;
pISR_BDMA1 = (unsigned) BreakPoint;
pISR_WDT = (unsigned) BreakPoint;
pISR_UERR01 = (unsigned) BreakPoint;
pISR_TIMER0 = (unsigned) BreakPoint;
pISR_TIMER1 = (unsigned) BreakPoint;
pISR_TIMER2 = (unsigned) BreakPoint;
pISR_TIMER3 = (unsigned) BreakPoint;
pISR_TIMER4 = (unsigned) BreakPoint;
pISR_TIMER5 = (unsigned) OSTickISR;
pISR_URXD0 = (unsigned) BreakPoint;
pISR_URXD1 = (unsigned) BreakPoint;
pISR_IIC = (unsigned) BreakPoint;
pISR_SIO = (unsigned) BreakPoint;
pISR_UTXD0 = (unsigned) BreakPoint;
pISR_UTXD1 = (unsigned) BreakPoint;
pISR_RTC = (unsigned) BreakPoint;
pISR_ADC = (unsigned) BreakPoint;
}
/****************************************************************************
【功能说明】使用定时器5作为ucos-II系统时钟
****************************************************************************/
void ARMInitTimers(void)
{
rTCFG0 |= 0x95<<16; //dead zone=0, Prescaler 0=149
rTCFG1 |= 0x03<<20; //all interrupt, MUX0=1/16
//T5的频率为60000000/150/16=25000,故T5平均1ms向系统申请一次时钟中断
rTCNTB5 = 25;
rTCON |= 0x02<<24; //update Timer 0,but Timer0 stop yet
}
/****************************************************************************
【功能说明】开启定时器5并设置为自动装载模式
****************************************************************************/
void ARMStartTimer(void)
{
//auto reload and start
rTCON = 0x05<<24;
}
/****************************************************************************
【功能说明】使能系统相关中断
****************************************************************************/
void ARMInstallSystemTimer(void)
{
//vectored interrupt mode,IRQ enable
rINTCON=0x1;
//开启中断定时器5和网卡中断
rINTMSK=~( BIT_TIMER5 | BIT_GLOBAL);
}
/****************************************************************************
【功能说明】以下为异常中断ISR
****************************************************************************/
void BreakPoint(void)
{
Uart_Printf("Enter BreakPoint");
SysReset(); //重新复位
}
void DebugUNDEF(void)
{
Uart_Printf("Enter DebugUNDEF");
SysReset(); //重新复位
}
void DebugSWI(void)
{
Uart_Printf("Enter DebugSWI");
SysReset(); //重新复位
}
void DebugPABORT(void)
{
Uart_Printf("Enter DebugPABORT");
SysReset(); //重新复位
}
void DebugDABORT(void)
{
Uart_Printf("Enter DebugDABORT");
SysReset(); //重新复位
}
void DebugFIQ(void)
{
Uart_Printf("Enter DebugFIQ");
SysReset(); //重新复位
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -