1.CPU频率60M,外围设备频率60M 2.TMR_wait(680)大概延时多少?我算了下是22us左右,不知道对不? 3.我现在需要精确延时22.7us/45.4us等,请问该怎么才能保证精度?
#ifndef __TMR_C__ #define __TMR_C__ #include <common.h>
#if WAIT_USING_TIMER==1
void TMR_init() { UART_printf("Timer Module init..."); T0CTCR=0x00;/*选择定时器模式*/ T0TC=0x00000000;/*原始数据0x00000000*/ T0PR=0x00000000; T0PC=0x00000000; UART_printf("OK!
"); }
void TMR_wait(unsigned int total) { T0TC=0x00000000;/*原始数据0x00000000*/ T0MR0=total;/*设置匹配0数据*/ T0TCR=0x01;/*使能TMR中断*/ T0MCR=0x07;/*产生MR0中断,TC复位,TMR停止*/ while(!(T0IR&0x01));/*等待MR0中断产生*/ T0IR=0x01;/*清除中断*/ T0TCR=0x00;/*禁止Timer*/ }
#endif
#endif |