Discuz! Board

标题: TM4C129定时器问题 [打印本页]

作者: swh267    时间: 2014-7-19 15:44
标题: TM4C129定时器问题
int main(void)
{
        //char c;
        //unsigned int i;
        uint32_t sas,mmm;
        //const char TXdata[]="chushihuachenggong!";
        jtagWait();//·àÖ1JTAGê§D§
        clockInit();//ê±Öó3õê¼»ˉ
        uartInit();//UART3õê¼»ˉ
       
        SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1 );
        TimerConfigure(TIMER1_BASE,TIMER_CFG_PERIODIC);
        TimerLoadSet(TIMER1_BASE,TIMER_A,0xfafffaa);       
        TimerEnable(TIMER1_BASE, TIMER_A);
        sas=TimerValueGet(TIMER1_BASE,TIMER_A);
        mmm=TimerLoadGet(TIMER1_BASE,TIMER_A);
       
        while(1)
        {
                UARTCharPut(UART6_BASE,(int8_t)((mmm)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((mmm>>8)&0xff));

                UARTCharPut(UART6_BASE,(int8_t)((mmm>>16)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((mmm>>24)&0xff));
                SysCtlDelay(TheSysClock/3);       
                UARTCharPut(UART6_BASE,(int8_t)((sas)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((sas>>8)&0xff));

                UARTCharPut(UART6_BASE,(int8_t)((sas>>16)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((sas>>24)&0xff));
               
        }
        今天想调试一下TM4C129的定时器,然后用串口打印出装载值和定时器的当前计数值,可是发现打印出来的当前计数值是不变的一个个值,而且该值不等于装载值,很是郁闷,想向各位请教一下,问题出在哪里了?


作者: admin    时间: 2014-7-19 20:41
用没用定时器中断?
作者: swh267    时间: 2014-7-19 22:59
没用中断,后来群里一个同学发现问题了,没有把这两个放到循环中去   sas=TimerValueGet(TIMER1_BASE,TIMER_A);mmm=TimerLoadGet(TIMER1_BASE,TIMER_A);,坛主,我想问一下,定时时长是怎么推算的,我设置主频是100MHz,32位定时器,最大装载值时,按上面那种方式来周期计时,计时周期是多少?我自己算的跟实际实验观察的感觉有出路
作者: admin    时间: 2014-7-20 20:39
swh267 发表于 2014-7-19 22:59
没用中断,后来群里一个同学发现问题了,没有把这两个放到循环中去   sas=TimerValueGet(TIMER1_BASE,TIMER ...

你使用的是周期定时器,在种模式中,Timer 都被配置成一个 32 位的递减计数器或者递增计数器,,而周期模式则可以周而复始地定时,除非被关闭。在计数到 0x00000000 时,在计数到 0x00000000 时或者预设值时,可以在软件的控制下触发中断或输出一个内部的单时钟周期脉冲信号。所有定时器肯定结合中断使用,你这是51单片机都没学过关
作者: swh267    时间: 2014-7-20 20:58
admin 发表于 2014-7-20 20:39
你使用的是周期定时器,在种模式中,Timer 都被配置成一个 32 位的递减计数器或者递增计数器,,而周期模 ...

不一定要用中断,因为我只是用周期定时来作为一个系统记时而已,定时器已经调通了,用串口可以观测到定时器的值变化,说明定时器正常工作了,时间也计算出来了,还是很感谢坛主的指导
作者: admin    时间: 2014-7-20 21:10
swh267 发表于 2014-7-20 20:58
不一定要用中断,因为我只是用周期定时来作为一个系统记时而已,定时器已经调通了,用串口可以观测到定时 ...

系统计时用定时器RTC模式




欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3