PWM定时器精准定时实现led闪烁(S3C2440裸机开发)


前言

上期和大家分享了使用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定时器的相关知识;最后,各位小伙伴们如果喜欢我的分享可以点赞收藏哦,你们的认可是我创作的动力,一起加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值