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);
}

相关推荐

  1. ARM裸机-24(shell)

    2024-04-05 00:12:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 00:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 00:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 00:12:01       82 阅读
  4. Python语言-面向对象

    2024-04-05 00:12:01       91 阅读

热门阅读

  1. IP知识详解

    2024-04-05 00:12:01       39 阅读
  2. Golang基础-10

    2024-04-05 00:12:01       36 阅读
  3. 大模型日报2024-04-03

    2024-04-05 00:12:01       44 阅读
  4. 软考之零碎片段记录(五)

    2024-04-05 00:12:01       33 阅读
  5. 速盾:cdn节点存储空间怎么管理

    2024-04-05 00:12:01       41 阅读
  6. 【LeetCode热题100】【技巧】多数元素

    2024-04-05 00:12:01       34 阅读
  7. git如何正确合并分支

    2024-04-05 00:12:01       39 阅读