Cortex M3S811学习笔记-TIMER32
2012-09-14 来源:51hei
把握大局,就是用来得到精确时间的一个定时器,单周期只跑一次,即使是你用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里面)
上一篇:制作寻光模块的常见问题分析
下一篇:Verilog按键消抖的理解
- 兆易创新推出GD32G5系列Cortex®-M33内核高性能MCU,全面激发工业应用创新活力
- 瑞萨推出全新RA8入门级MCU产品群, 提供极具性价比的高性能Arm Cortex-M85处理器
- STM32(cortex_m3) 的 Bit-Banding 怎样理解
- ARM7与ARM Cortex比较
- ARM7 与Cortex M3的区别
- ARM处理器基础Cortex-M4
- 32位通用增强型Cortex-M3单片机CH32F103C8T6替代stm32f103c8t6
- Cortex-M3的STM32微控制器处理先进电机控制方法
- Arm 推出人工智能优化的 Arm 终端计算子系统以及新的 Arm Kleidi 软件, 重新定义移动端体验
- Microchip扩大耐辐射单片机产品线推出基于Arm® Cortex®-M0+ 的32位单片机SAMD21RT