ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
* 导师视频讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz?p=13) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> ## **定时器3 简介** 定时器3是一个8位的定时器,计数范围是0~255。在上节课中,我们采用了查询的方式来定时,本节课带领读者会采用中断的方式。 <br/> ## **相关寄存器** ![](https://img.kancloud.cn/2d/e6/2de6857ed311d48095d97606140932bb_1108x1090.png =600x) ![](https://img.kancloud.cn/d8/2b/d82b510f658ca587559370659124719f_1110x1332.png =600x) <br/> ## **寄存器配置** ``` 1.T3CTL = 0xE8;   // Bit[7:5]  :   111 -> 128分频;   2. // Bit3     : 1 -> 打开溢出中断   3. // Bit[1:0]  :  00 -> 自由计数,反复从0到255   4.T3IE = 1;       // 使能定时器3中断   5.EA  = 1;        // 开启中断总开关   6.T3CTL |= 0x10;  // 启动定时器 ``` <br/> ## **定时原理** 定时器3的系统时钟频率为:16 MHz的128分频,即16000000/128Hz * 由上节课的公式1可以得出,其时钟周期T=128/16000000 * 在计时5秒的情况下,由上节课的公式2可以得出,计数值 N=5/(128/16000000) = 625000。 由此可以得出,定时器3在系统时钟频率的16MHz的128分频状态下,计数625000次所需的时间5秒。 #### **处理溢出** 定时器3是8位计数器,每溢出1次计数256次,因此其在定时5秒后的溢出次数为:625000 / 256 = 2441.4,即2441次。 <br/> ## **源码分析** ``` void main() { initLed(); initTimer3(); while(1) { } } ``` ### 定时器3初始化函数的工作内容 * 128分频 * 开溢出中断 * 自由计数 * 中断使能 * 最后启动定时器 ``` static void initTimer3(void) { T3CTL = 0xE8; // Tick frequency/128 // Overflow interrupt is enabled // Free running, repeatedly count from 0x00 to 0xFF T3IE = 1; // Enable timer3 interrupt EA = 1; // Enable Interrupts T3CTL |= 0x10; // Start timer } ``` ### 定时器3中断服务函数 * 声明中断向量T3_VECTOR * 溢出计数2441次,溢出2441次时长约等于5秒 * 每隔5秒调试输出并反转LED ``` /* * Timer3 interrupt service function */ #pragma vector = T3_VECTOR __interrupt void Timer3_ISR(void) { // ~5s if (++counter_g == 2441) { counter_g = 0; DEBUG_LOG("Timer3 timeout -> 5-seconds!\r\n"); LED = (LED == LED_ON)?LED_OFF : LED_ON; } } ``` <br/> ## **仿真调试** >[danger] 在学习本节课前,需要先掌握基本的程序下载及仿真操作,参考:[程序下载及仿真](2482302) 打开本节课配套的工程并且编译通过后,进行仿真调试,运行结果如下图所示: ![](https://img.kancloud.cn/83/90/8390cf2e5c9a91168c85394a0f858115_530x258.png =400x) <br/> <br/> ## **项目定制** * 如需项目定制开发,可扫码添加项目经理好友(注明“**项目定制**”) * 定制范围:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技术方案 * 善学坊官网:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非项目定制**勿扰**,此处**非**技术支持