PWM定时器

PWM定时器 - 盼盼 - 盼盼的博客 S3C2440A 有 5 个 16 位定时器。其中定时器 0、1、2 和 3 具有脉宽调制 (PWM )功能。定时器 4 是一个无输出引脚的内部定时器。

PWM定时器 - 盼盼 - 盼盼的博客定时器 0 和 1 共用一个 8 位预分频器 ,定时器 2、3 和 4 共用另外的 8 位预分频器。每个定时器都有一个可以

生成 5 种不同分频信号 (1/2 ,1/4 ,1/8 ,1/16 和 TCLK )的时钟分频器。每个定时器模块从相应 8 位预分频器得到

时钟的时钟分频器中得到其自己的时钟信号。8 位预分频器是可编程的 ,并且按存储在 TCFG0 和 TCFG1 寄存器

中的加载值来分频 PCLK。

PWM定时器 - 盼盼 - 盼盼的博客每个定时器有它自己的由定时器时钟驱动的  16 位递减计数器。当递减计数器到达零时 ,产生定时器中断请求

通知 CPU 定时器操作已经完成。

 

定时器寄存器:

PWM定时器 - 盼盼 - 盼盼的博客

 

PWM定时器 - 盼盼 - 盼盼的博客

 

PWM定时器 - 盼盼 - 盼盼的博客

 PWM定时器 - 盼盼 - 盼盼的博客PWM定时器 - 盼盼 - 盼盼的博客

 

 PWM定时器 - 盼盼 - 盼盼的博客

 

 PWM定时器 - 盼盼 - 盼盼的博客

定时器的工作流程
 
 
PWM定时器 - 盼盼 - 盼盼的博客
 
 
 
PWM定时器 - 盼盼 - 盼盼的博客
 

 

*****************************************************************************************************************************************************

 

C示例程序(部分代码)   :  实现LED每隔 0.5秒闪烁一次

 

void Timer0_Init(void)

{

    rTCFG0 = 49;                //PCLK/(49+1)

    rTCFG1 = 0x03;            //16分频=62500Hz   

   rTCNTB0 = 62500/2;      //TCNTB0[15:0]=计数值

   rTCMPB0 = 0;

   rTCON = 0x09;             //将计数值装入 TCNTB0 ,TCMPB0

   ClearPending(BIT_TIMER0);

   pISR_TIMER0=(U32)IRQ_Timer0_Handle;

   EnableIrq(BIT_TIMER0);

}

/*定时器中断处理函数*/

static void __irq IRQ_Timer0_Handle(BIT_TIMER0)

{

   ClearPending(BIT_TIMER0);

   Led1_run();

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值