原创 LM2S6916 Timer0 32位定时器 1S定时测试过程

2008-11-6 12:03 2899 0 分类: MCU/ 嵌入式

LM2S6916 Timer0 32位定时器 1S定时测试过程:


这是网上找到的例子!


初始化(32位周期性定时):


    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);       /*  使能定时器模块              */
    TimerConfigure(TIMER0_BASE , TIMER_CFG_32_BIT_PER); /*  配置定时器为32位周期定时器  */
    TimerLoadSet(TIMER0_BASE , TIMER_A , 20000000);    /*  设置定时器初值              */
    TimerIntEnable(TIMER0_BASE , TIMER_TIMA_TIMEOUT);   /*  使能定时器超时中断          */
    IntEnable(INT_TIMER0A);                             /*  使能定时器中断              */
    IntMasterEnable();                                  /*  使能处理器中断              */
 TimerEnable(TIMER0_BASE , TIMER_A);                 /*  使能定时器计数              */


中断服务函数:


void  Timer0A_ISR(void)
{
    TimerIntClear(TIMER0_BASE , TIMER_TIMA_TIMEOUT);                    /*  清除定时器超时中断,重要!  */


    //应用
}


说明:


中断服务函数要在Startup.s中写到__Vectors表上:


在前面加上这个定义  EXTERN Timer0A_ISR


把这行修改一下:DCD     IntDefaultHandler           ; Timer 0A


        DCD     Timer0A_ISR           ; Timer 0A


 


关于定时器初值的计算方法:


例子:


SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);


我把系统时钟设定为20HMz(200MHz10分频)


那么计数值1=0.05us(1000000us/20000000hz)


1S=1000000us/0.05us=20000000次(这就是初值)


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /1 下一条