这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】定时器2的初始化--from恶龙咆哮

共2条 1/1 1 跳转至

【原创】定时器2的初始化--from恶龙咆哮

工程师
2022-06-22 20:18:19     打赏

我们在做蓝桥杯单片机比赛试题的时候,经常会遇到超声波和串口共用的情况,此时就需要占用两个定时器资源,如果这个时候我们又需要定时器定时的话,就需要用到第三个定时计数器了,很多初学者不知道定时器有三个或者没意识到使用第三个定时器,这样在设计的时候会遇到很多问题,而当我们掌握了第三个定时器的使用的时候,就拥有了更多的定时器资源。

以下是我们定时器2的打开方式:

Void Time2Init()
{
       EA = 1;
       IE2 = (1 << 2);
       AUXR &= 0XFB;      //定时器时钟12T模式
       T2L = 0X30;       //2ms
       T2H = 0XF8;
       AUXR |= 0X10;    // 定时器2开始计时
}

对于使用的头文件是<reg52.h>的同学,这个头文件里并没有定义IE2AUXR、T2L、T2H的寄存器地址,所以我们需要在调用头文件后定义他们的地址,当然这个地址不是自己定义的,而是官方给定的,地址定义如下:

sfr AUXE = 0X8E;

sfr IE2  = 0XAF;

sfr T2H = 0XD6;

sfr T2L = 0XD7;

 

同样的,中断服务程序的数字,是12,即

void Timer2() Interrupt 12
{
      
}


定时器2的中断服务函数里不需要我们放初值,每次运行的时候他会自己放进去,以上就是我们蓝桥杯单片机定时器2的初始化,在我们实际运用中,建议大家将定时器0用作串口通信,定时器1用作超声波检测,定时器2作定时器,合理运用才可以发挥他们最大的价值。




院士
2022-06-22 22:09:43     打赏
2楼

小资源的情况就要彰显大智慧了。



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]