Cortex M3S811学习笔记-TIMER32
把握大局,就是用来得到精确时间的一个定时器,单周期只跑一次,即使是你用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里面)
- 基于CMSIS标准的Cortex-M3的应用软件开发(06-20)
- 基于μC/OS-II和TCP/IP协议的多串口服务器(08-23)
- μC/OS-II就绪表算法在Cortex-M3架构上的适配设计(01-22)
- 基于ATK的实时语音识别系统在家庭监护机器人中的应用实现(04-28)
- 基于Linux/Qt的智能家居系统设计(07-07)
- STM32中断与嵌套NVIC快速入门(01-25)