嵌入式 > 技术百科 > 详情

Cortex M3S811学习笔记-TIMER32

发布时间:2020-05-28 发布时间:
|
今天把32位下的定时功能搞清楚了,首先32位下只有三个功能,32位单周期定时,32位多周期定时,和一个要外接时钟的RTC。RTC 我们暂时用不上,先不管。

把握大局,就是用来得到精确时间的一个定时器,单周期只跑一次,即使是你用TimerLoadSet(TIMERn_BASE,TIMER_A,要赋的值);他也不会跑了,是没有用的。说跑一次就是一次; 跑一次还是N次是由定时器模式设置达到的:TIMERMODULE(TIMER2_BASE,TIMERS320);


来说下具体如何操作

1:使能定时器模块,DEVICEEN(SYSCTL_PERIPH_TIMER2);

2:设置模式        TIMERMODULE(TIMER2_BASE,TIMERS32);

3:  装值           TimerLoadSet(TIMER2_BASE,TIMER_A,要装的值);

4:  启动定时器     TimerEnable(TIMER2_BASE,TIMER_A);


 以上就是完整过程,TIEMR2到0后自己动变为装载值。

可以用查询的方法,确定具体时间干什么事;

if(TimerValueGet(TIEMR1_BASE,TIMERA)>多少){你要干什么事情};

 

 


下面是用中断的方法进入中断,然后处理中断程序,有中断,就要写中断程序,麻烦;

以下是具体步骤:

1:同上,使能定时器模块,DEVICEEN(SYSCTL_PERIPH_TIMER1)

2;  同上,设置定时器模式,TIMERMODULE(TIMER1_BASE,TIMERS32);

3:注意,这里就不同了,开定时器溢出中断;与GPIOINTENABLE对比,

                         TimerIntEnable(TIMER_BASE,TIMERAOUT);

(TIMERAOUT名为溢出中断,就是减到了0不能减了,就溢出了,需从头开始)

4:开总的TIMER中断,    IntEnable(INT_TIMER1A);

5:开CPU的中断,       IntMasterEnable();


6:同上装初值            TimerLoadSet(TIMER1_BASE,TIMER_A,要装的值)

7:启动定时器,开始计数 TimerEnable(TIMER1_BASE,TIMER_A);

最后一步:时间到了进中断,你需要进处理中断,也就是你要写的中断程序(切记,一定要修改中断向量表中的名字和申明,在startup.s里面)

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用于MAX7456随屏显示器SPI