#include "HAL.h" /*****************************************************/ /*uart base config*/ #define UART_BPS 115200 #define UART_DATABITS 8 #define UART_STOPBITS 1 extern void TickHandler(void); void uart_init(void) { u32 fdiv; /*1.select pin*/ PINSEL0=(PINSEL0&(~0x0F))|0x05; /*2.uart register config*/ UxLCR0=(UART_DATABITS-5)|((UART_STOPBITS-1)<<2)|(1<<7); fdiv=(Fpclk/16)/UART_BPS; UxDLL0=fdiv%256; UxDLM0=fdiv/256; UxLCR0=(UART_DATABITS-5)|((UART_STOPBITS-1)<<2); } void uart_SendByte(s8 c) { while((UxLSR0&0x20)==0); UxTHR0=c; } void uHALr_printf(const char* fromat) { while(*fromat!='\0') { uart_SendByte(*fromat++); } } /*******************************************/ //初始化系统中断 void uHALr_InitInterrupts(void) { // VICIntEnClr=0xFFFFFFFF; //禁止全部中断使能 //使用IRQ,不使用FIQ ARMEnableInt(); } s8 flag=0; void __irq irq_timer0(void) { T0IR=0x01; // uHALr_printf("t"); flag=1; VICVectAddr=0x00; } //初始化系统时钟中断 void uHALr_InstallSystemTimer(void) { VICIntSelect=0x0; VICVectCntl0=0x20|(0x04);// VICVectAddr0=(u32)TickHandler; //VICVectAddr0=(u32)irq_timer0; // uHALr_printf("run"); } void uHALr_InitTimers(void) { T0IR=0xFF; T0TC=0x0; T0PR=0x0; T0MCR=0x03; T0MR0=Fpclk/100; //10ms T0TCR=0x01; VICIntEnable=(1<<0x4); //使能TIMER0 }