📄 uhal.c
字号:
/* ARM board targetting source file.
file name: uhal.c
date: 2001. 2. 14
made by cho dong-seok
homepage: www.pusanssm.com/~cthr36/
*/
#include <stdarg.h>
#include <string.h>
#include "uhal.h"
#include "../Target/44b.h"
//MCLK= 50000000
//50000000hz/256/32= 6103.51hz
#define _TICK 1000 // 1/1000 sec
//#define _TICK 100 // 1/100 sec
//#define _TICK 10 // 1/10 sec
#define _CLOCK (66000/(_TICK/10))
//#define _CLOCK 61035 // 1 sec
#define MAX_TBUF 10000
static char tbuf[MAX_TBUF]= {0, };
int delayLoopCount= 400;
int whichUart= 0;
//Output through LCD or serial port to print information.
int uHALr_printf(const char *format, ...)
{
va_list v_list;
char *ptr;
int i= 0;
va_start(v_list, format); // Initialize variable arguments.
vsprintf(tbuf, format, v_list );
va_end(v_list);
ptr= tbuf;
while( (*ptr) && i<MAX_TBUF) {
Uart_SendByte(*ptr);
ptr++; i++;
}//while
return 1;
}//uHALr_printf
void BreakPoint(void)
{
uHALr_printf("!!!Enter break point.");
while(1) {
Led_Display(0xf);
Delay(1000);
Led_Display(0x0);
Delay(1000);
}//while
}//BreakPoint
/*** Called by ARMTargetInit() ***/
//Reset memory management unit.
void uHALr_ResetMMU(void)
{
}//uHALrResetMMU
void OutDebug(unsigned int num)
{
uHALr_printf("\r\n***STACK***:%d\r\n", num);
}//OutDebug
//Define pre & post-process routines for Interrupt.
void uHALir_DefineIRQ(void *is, void *iq, void *n)
{
}//uHALir_DefineIRQ
//Initialze interrupts.
void uHALr_InitInterrupts(void)
{
// Non-vectored,IRQ disable,FIQ disable
rINTCON=0x0;
// All=IRQ mode
rINTMOD=0x0;
// All interrupt is masked.
rINTMSK=BIT_GLOBAL;
}//uHALr_InitInterrupts
//Initialize timer that is used OS.
void uHALr_InitTimers(void)
{
rTCFG0=0x00000004; // prescaler0 = 4
rTCFG1=0x00000003; // mux0 = 1/16
rTCNTB0= 1000;//_CLOCK;
rTCMPB0= 0x0;
rTCON=0x2; //update mode for TCNTB0 and TCMPB0.
rTCON=0x9; //timer0 = auto reload, start
}//uHALr_InitTimers
int I_COUNT=0;
void DebugUNDEF(void)
{
uHALr_printf("!!!Enter UNDEFINED. %d\r\n", I_COUNT);
while(1) {
Led_Display(0xf);
Delay(1000);
Led_Display(0x0);
Delay(1000);
}//while
}//BreakPoint
void DebugSWI(void)
{
uHALr_printf("!!!Enter SWI. %d\r\n", I_COUNT);
while(1) {
Led_Display(0xf);
Delay(1000);
Led_Display(0x0);
Delay(1000);
}//while
}
void DebugABORT(void)
{
uHALr_printf("!!!Enter ABORT %d\r\n", I_COUNT);
while(1) {
Led_Display(0xf);
Delay(1000);
Led_Display(0x0);
Delay(1000);
}//while
}
void DebugFIQ(void)
{
uHALr_printf("!!!Enter FIQ. %d\r\n", I_COUNT);
while(1) {
Led_Display(0xf);
Delay(1000);
Led_Display(0x0);
Delay(1000);
}//while
}
extern void __Tick(void);
/*** Called by ARMTargetStart() ***/
//Request the system timer.
//return value 1:success 0:fail
int uHALr_RequestSystemTimer(void *tick, const unsigned char *str)
{
pISR_TIMER0= (unsigned)__Tick;//put the pointer to __Tick at the interrupt vector for timer0
pISR_UNDEF= (unsigned) DebugUNDEF;
pISR_SWI= (unsigned) DebugSWI;
pISR_PABORT= (unsigned) DebugABORT;
pISR_DABORT= (unsigned) DebugABORT;
// pISR_RESERVED
// pISR_IRQ= (unsigned) 0;
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_EINT4567= (unsigned) BreakPoint;
pISR_WDT= (unsigned) BreakPoint;
pISR_TIMER3= (unsigned) BreakPoint;
pISR_TIMER2= (unsigned) BreakPoint;
pISR_TIMER1= (unsigned) BreakPoint;
// pISR_TIMER0= (unsigned) BreakPoint;
pISR_UERR01= (unsigned) BreakPoint;
pISR_BDMA1= (unsigned) BreakPoint;
pISR_BDMA0= (unsigned) BreakPoint;
pISR_ZDMA1= (unsigned) BreakPoint;
pISR_ZDMA0= (unsigned) BreakPoint;
pISR_EINT3= (unsigned) BreakPoint;
pISR_EINT2= (unsigned) BreakPoint;
pISR_EINT1= (unsigned) BreakPoint;
pISR_EINT0= (unsigned) BreakPoint;
return 1;
}//uHALr_RequestSystemTimer
//Start system timer & enable the interrupt.
void uHALr_InstallSystemTimer(void)
{
//Non-vectored,IRQ enable,FIQ disable
rINTCON=0x5;
//Non maksed TIMER0 .
rINTMSK=~(BIT_TIMER0 | BIT_GLOBAL); //Default value=0x7ffffff
}//uHALr_InstallSystemTimer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -