arm裸机-1、定时器pwm

时钟配置

我们使用s3c2440,主频12M,查看用户手册

通过锁相环抬升到400MHZ,分成三条通路,通过HHDIVN和PDIVN配置频率比,这个频率比配置手册已经给出。

配置MPLL主频400Mhz,

通过这个公式算出MPLL

s、p、m都已经给出,事实上手册已经给出了一些普遍的值。

这里我们选择127-2-1

代码如下

void clock_init(void)//PCLK频率设置50Mhz
{
    //设置HDIVN为10
    CLKDIVN |= (0x2 << 1);

    //设置PDIVN为1
    CLKDIVN |= 0x1;

    //设置UPLL为400M
    UPLLCON |= (0x7f << 12) | (0x10 << 4) | (0x1);
}

pwm配置

我们结合框图和概述来理解

与我们配置stm32时不同,计数缓冲计数器是向下计数的,当到0时,重装载计数值。

当我们配置定时器1预分频值24(+1)后,时钟由50M变为2M,再经过定时器配置寄存器TCFG1选择1/2分频,变为1Mhz,我们的周期就是我们配置的计数缓冲器

占空比为1/2

void pwm_init(void)
{
    //配置TOUT0输出端口GPB0
    GPBCON &= ~(0x3);
    GPBCON |= 0x2;
    
    //配置定时器0的预分频值为24+1
    TCFG0 |= 24;
    
    //PWM定时器0选通1/2分频
    TCFG1 |= 0x0;

    //设置定时器0重装载值与计数比较值
    TCNTB0 = 2000;
    TCMPB0 = 1000;
    
    //配置定时器0
    TCON |= (0x1 << 3);
    TCON &= ~(0x1 << 2);
    TCON |= (0x1 << 1);
    TCON |= 0x1;
    TCON &= ~(0x1 << 1);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值