单片机
返回首页

Cortex M3S811学习笔记-TIMER32

2012-09-14 来源:51hei

今天把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里面)

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 永不缺相启动运行的电动机控制电路

  • CCFL的工作原理及电子驱动电路解析

  • MT3608构成3.7V转12V的升压电路图

  • 运算放大器IC741的基本工作原理及在电路中的实现方式

  • 基于M66T旋律发​​生器的电路图解析

  • 基于TDA1554的立体声放大器电路

    相关电子头条文章