文章目录
- 前言
- 一、PWM定时器原理
- 二、使用步骤
- 总结
前言
上期和大家分享了使用PWM定时器输出周期方波驱动蜂鸣器,那么本期分享的内容是使用PWM定时器实现定时器的功能,有了上期的基础,这期分享的内容大家理解起来应该非常easy,接下来看一下吧!
一、PWM定时器原理
PWM定时器的原理其实是使用了中断,这里使用的定时器0;
二、使用步骤
如下实现的是每过两秒led灯进行2s闪烁的现象;这里需要注意的是已经没有了TCMPB0这个寄存器,这个也就是PWM输出方波和定时器功能的一个最直观的区别;
代码如下:
void timer_init()
{
//1s
TCFG0 |= 0xff;
TCFG1 &= ~0xf;
TCFG1 |= 0x3; //减法计数器频率 = 50M/(255+1)/16 = 12207
TCNTB0 = 24414; //以12207的速度把24414减为0
TCON &= ~0x3;
TCON |= 1<<1; //开启手动更新TCNTB0和TCMPB0的值到减法计数器
TCON &= ~0xf;
TCON |= 1<<3; //开启自动更新
INTMSK &= ~(1<<10);
TCON |= 1;
}
void do_timer()
{
GPBDAT ^= 1<<5; //异或可以实现十六进制的某一位反转(相同为0不同为1)
uprintf("ok!\r\n");
SRCPND |= 1<<10;
INTPND |= 1<<10;
}
总结
本期主要分享的是pwm定时器的功能,能够实现自主精确定时,希小伙伴们和上期分享的内容进行对比,掌握PWM定时器的相关知识;最后,各位小伙伴们如果喜欢我的分享可以点赞收藏哦,你们的认可是我创作的动力,一起加油!