定时器(三)
来源:互联网 发布:mac桌面图标怎样缩小 编辑:程序博客网 时间:2024/06/08 18:51
前言
前面讲了利用定时器3的查询方式来实现LED1的闪烁,那么我们怎么用中断方式控制呢?今天,我们主要来讨论这个话题。
那么我们想想,应该怎么让定时器3产生中断呢?
无非也就这几步骤:分频、打开溢出中断、装数、使能定时器3中断,使能总中断、启动计数。
那么分频需要用到哪个寄存器呢?
前章博客也讲过了,需要用到
定时器3的控制寄存器T3CTL
T3CTL|=0XE0; //128分频
接着就是打开溢出中断了
定时器3的控制寄存器T3CTL
T3CTL |= 0x08 ; //开溢出中断
然后就是向定时器3放一个数进去
定时器3的控制寄存器T3CTL
T3CTL &= ~0X03; //自动重装0x00---0xFF
然后再开启定时器3的中断和总中断
T3IE = 1; //开Timer3中断 EA = 1; //开总中断
最后启动定时器3
T3CTL |=0X10; //启动
因此我们可以将上面的代买封装成一个函数,方便以后代码的使用
void Timer3_interrupt_init(){ T3CTL|=0XE0; //128分频, T3CTL |= 0x08 ; //开溢出中断 T3CTL &= ~0X03; //自动重装0x00---0xFF T3IE = 1; //开Timer3中断 EA = 1; //开总中断 T3CTL |=0X10; //启动}
做完上面的还不够,我们需要写中断函数
#pragma vector = T3_VECTOR //Timer3中断向量 __interrupt void T3_ISR(void) { IRCON = 0x00; //清中断标志, 也可由硬件自动完成 if((++count)>254) //254次中断后LED取反,闪烁一轮(0.5 秒时间) { count = 0; //计数清零 LED1=~LED1; } }
最后我附上主函数的代码
void main(void){ LEDinit(); //调用初始化函数 Timer3_interrupt_init(); while(1) { }}
通过上面的例子,我们很快就能掌握定时器的基本使用,有不懂得童鞋可以在下面留言。下期我们讲讲DMA。
0 0
- 定时器(三)
- Linux C 定时器 篇(三)
- 定时器的应用(三):数码时钟
- js定时器(三)向左向右
- ZigBee基础实验(三)--定时器1
- Windows程序设计(三)---定时器的三种使用方法
- iOS三种定时器
- 三、Systick定时器
- cocos2dx三种定时器
- java三种定时器
- javascript基础(定时器的应用)(四十三)
- TIM通用定时器(三):PWM输入捕获模式
- 如何使用W7100A的定时器/计数器(三)
- 51单片机(三)——定时器/计数器
- 计算机网络(三)传输层—TCP四种定时器
- TIM通用定时器(三):PWM输入捕获模式
- ESP8266 SDK开发篇(三)——定时器
- Quartz总结(三):动态修改定时器一
- Python3 基础:字符串和编码
- CSS Position 定位
- 学习记录——网络层(3)
- jquery仿直播app按钮点赞特效
- baidu嵌入式软件工程师基础技术一面 试题
- 定时器(三)
- day15泛型
- Python语法 之 结构与函数
- IDEA中maven项目导jar包太慢
- 一张图吃透android的TouchEvent事件传递
- 为什么很多人都选择 OS X + Vim + IntelliJ IDEA?
- SSO 单点登录
- Kaggle入门——使用scikit-learn解决DigitRecognition问题
- oracle 语句创建数据库