⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uhal.c

📁 一个ADS下的ucos-II的移植代码,大家
💻 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 "../inc/register.h"
#include "../inc/44blib.h"
#include "../inc/option.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(char *format, ...)
{

	//2003年04月25日
	Uart_Printf(0,format);
	Uart_Printf(1,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(0,*ptr); //2003年4月 by xigang.li
		Uart_SendByte(1,*ptr);
		ptr++;	i++;
	}//while
*/
	return 1;
}//uHALr_printf


void BreakPoint(void)
{
	uHALr_printf("!!!Enter break point.");	

	while(1) {
		Led_Display(0x08);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x04);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x02);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x01);		//LED点亮/熄灭状态设置
		Delay(500);
	}//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)
{
	Isr_Init();
}//uHALr_InitInterrupts


//Initialize timer that is used OS.
void uHALr_InitTimers(void)
{
	Timer_Pwm();		//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(0x08);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x04);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x02);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x01);		//LED点亮/熄灭状态设置
		Delay(500);
	}//while
}//BreakPoint


void DebugSWI(void)
{
	uHALr_printf("!!!Enter SWI. %d\r\n", I_COUNT);	


	while(1) {
		Led_Display(0x08);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x04);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x02);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x01);		//LED点亮/熄灭状态设置
		Delay(500);
	}//while

}

void DebugABORT(void)
{
	uHALr_printf("!!!Enter ABORT %d\r\n", I_COUNT);	


	while(1) {
		Led_Display(0x08);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x04);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x02);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x01);		//LED点亮/熄灭状态设置
		Delay(500);
	}//while

}

void DebugFIQ(void)
{
	uHALr_printf("!!!Enter FIQ. %d\r\n", I_COUNT);	


	while(1) {
		Led_Display(0x08);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x04);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x02);		//LED点亮/熄灭状态设置
		Delay(500);		//延时若干个100us
		Led_Display(0x01);		//LED点亮/熄灭状态设置
		Delay(500);
	}//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;

	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 + -