Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / S3C2440定时器和pwm编程分析

从图可以看出:l         定时器的输入时钟是PCLK;l         T0和T1为一组,T0、T1共用一个8bit分频器l         T2、T3、T4为一组,共用一个8bit分频器,T4没有输出引脚只能做内部时钟使用。l         8bit分频后还有一个1/2 1/4 1/8 1/16 的clock divider。l         定时器输入时钟频率计算如下:       [ /(prescaler+1)]/分频器的分频值prescaler value = 119divider value = 1/16PCLK= 50700000Timer input clock Frequency =50700000/ (119+1)/(16)=26406 就是输入的时钟,prescaler就是分频值(2,4,8,16),其中TCFG0控制着prescaler的分频值;TCFG1控制着分频器的值(2,4,8,16)。l         定时器减法缓冲寄存器TCNTBn和比较缓冲寄存器TCMPBnTCNTBn存放计数值,TCMPBn存放比较值,当定时器开启后TCNTBn和TCMPBn将被下载到TCNTn和TCMPn中,TCNTn和TCMPn不会理会硬件自动操作。当TCNTn和TCMPn值相等时电平反转,当TCNTn为零时CU产生中断。其实如果只是定时作用的话是不用去操作TCMPBn的,TCMPBn用于产生PWM波。l         定时器控制寄存器TCON和定时器观察寄存器TCNTOn定时器0的初始化void Timer0_Init(){    //设置TOUT0为输出引脚TCFG0 = 99;//预分频器值TCFG1 = 0x03;//16分频TCNTB0 = 31250;//the time interal is 1s=(50M/(99+1)/16)TCON = 0xa;//手动更新TCON = 0x9;//自动更新INTMASK &= (~(1<<10));//允许定时器0中断。}