时钟配置
我们使用s3c2440,主频12M,查看用户手册
通过锁相环抬升到400MHZ,分成三条通路,通过HHDIVN和PDIVN配置频率比,这个频率比配置手册已经给出。
配置MPLL主频400Mhz,
通过这个公式算出MPLL
s、p、m都已经给出,事实上手册已经给出了一些普遍的值。
这里我们选择127-2-1
代码如下
void clock_init(void)//PCLK频率设置50Mhz
{//设置HDIVN为10CLKDIVN |= (0x2 << 1);//设置PDIVN为1CLKDIVN |= 0x1;//设置UPLL为400MUPLLCON |= (0x7f << 12) | (0x10 << 4) | (0x1);
}
pwm配置
我们结合框图和概述来理解
与我们配置stm32时不同,计数缓冲计数器是向下计数的,当到0时,重装载计数值。
当我们配置定时器1预分频值24(+1)后,时钟由50M变为2M,再经过定时器配置寄存器TCFG1选择1/2分频,变为1Mhz,我们的周期就是我们配置的计数缓冲器
占空比为1/2
void pwm_init(void)
{//配置TOUT0输出端口GPB0GPBCON &= ~(0x3);GPBCON |= 0x2;//配置定时器0的预分频值为24+1TCFG0 |= 24;//PWM定时器0选通1/2分频TCFG1 |= 0x0;//设置定时器0重装载值与计数比较值TCNTB0 = 2000;TCMPB0 = 1000;//配置定时器0TCON |= (0x1 << 3);TCON &= ~(0x1 << 2);TCON |= (0x1 << 1);TCON |= 0x1;TCON &= ~(0x1 << 1);
}