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

文章目录

  • 前言
  • 一、PWM定时器原理
  • 二、使用步骤
  • 总结


前言

上期和大家分享了使用PWM定时器输出周期方波驱动蜂鸣器,那么本期分享的内容是使用PWM定时器实现定时器的功能,有了上期的基础,这期分享的内容大家理解起来应该非常easy,接下来看一下吧!


一、PWM定时器原理

PWM定时器的原理其实是使用了中断,这里使用的定时器0;
PWM定时器精准定时实现led闪烁(S3C2440裸机开发)_第1张图片

二、使用步骤

如下实现的是每过两秒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定时器的相关知识;最后,各位小伙伴们如果喜欢我的分享可以点赞收藏哦,你们的认可是我创作的动力,一起加油!

你可能感兴趣的:(ARM体系结构与接口技术,arm开发,linux,嵌入式硬件,ARM汇编)