zoukankan      html  css  js  c++  java
  • S5PV210 PWM定时器

    第一节 S5PV210的PWM定时器
    S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PSYS作为时钟源,相关知识可以查阅"初始化时钟",相关的结构图如下:

    image

    第二节 程序相关讲解
    完整代码见目录见详细代码下载链接。
    1. main.c
    核心代码如下:
    int main(void)
    {
    // 初始化串口
    uart_init();
    // 中断相关初始化
    system_initexception();
    // 设置timer
    timer_request();
    while(1);
    }
    共4个步骤,其中第3步与定时器相关:
    第一步 初始化串口;
    第二步 中断相关初始化;
    第三步 设置timer,函数timer_request()的定义位于timer.c中;
    第四步 死循环,等待timer中断的发生;
    2. timer.c
    void timer_request(void)
    {
    printf(" #############Timer test############ ");
    // 禁止所有timer
    pwm_stopall();
    // 设置timer0中断的中断处理函数
    intc_setvectaddr(NUM_TIMER0,irs_timer);
    // 使能timer0中断
    intc_enable(NUM_TIMER0);
    // 设置timer0
    timer_init(0,65,4,62500,0);
    }
    共3个步骤:
    第一步 禁止所有timer,往寄存器TCON写0即可;
    第二步 设置VIC,先设置timer0中断的中断处理函数为irs_timer(),然后使能timer0中断;
    第三步 设置timer0,调用了函数timer_init(),其核心工作是:
    1) 设置分频
    首先设置分频系数,相关寄存器是TCFG0,如下:

    image
    然后设置为16分频,相关寄存器是TCFG1,如下:

    image

    经过上面的设置之后,就能确定timer的输入时钟了,计算方式如下:
    Timer Input Clock Frequency = PCLK / ( {prescaler value + 1} ) / {divider value} = 66MHz/(65+1)/16=62500hz
    2) 设置计数
    设置寄存器TCNTB0=62500和TCMPB0=0,启动timer0后,TCNTB0会逐渐-1,直到等于TCMPB0时就产生一次中断,即1秒产生一次timer0中断。

    image
    3) 启动timer0
    设置寄存器TCON,先设置手动更新位,然后清除手动更新位,使用自动装载,最后启动timer0。
    4) 使能timer0中断
    设置寄存器TINT_CSTAT,使能timer0中断。

    image

    最后再来分析timer0中断处理函数irs_timer(),共3个步骤:
    第一步 清timer0的中断状态寄存器TINT_CSTAT;
    第二步 打印timer0中断发生的次数,每产生一次timer0中断就打印一次。
    第三步 VIC相关的中断清除,调用函数intc_clearvectaddr();
    第三节 实验现象
    终端会不断的打印数字1、2、3、4...,频率为每秒打印1次。

    详细代码下载链接:http://download.csdn.net/detail/klcf0220/5741631

  • 相关阅读:
    配置sqlserver端口
    HTML5本地存储之localStorage
    初始化ArrayList的方法
    like 模糊查询 mybatis写法
    关于删除 值的引用 导致入参丢失的问题。
    学生做题分析功能设计(正确率,已做)
    关于商城类项目 商品表如何设计的问题
    修改Mysql的自增Id
    java list转map的几种方式
    jxls 入门及几个比较坑的地方
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3185917.html
Copyright © 2011-2022 走看看