S5PV210 PWM定时器
第一节 S5PV210的PWM定时器
S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PSYS作为时钟源,相关知识可以查阅"初始化时钟",相关的结构图如下:
第二节 程序相关讲解
完整代码见目录见详细代码下载链接。
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("\r\n#############Timer test############\r\n");
// 禁止所有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,如下:
然后设置为16分频,相关寄存器是TCFG1,如下:

经过上面的设置之后,就能确定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中断。
3) 启动timer0
设置寄存器TCON,先设置手动更新位,然后清除手动更新位,使用自动装载,最后启动timer0。
4) 使能timer0中断
设置寄存器TINT_CSTAT,使能timer0中断。

最后再来分析timer0中断处理函数irs_timer(),共3个步骤:
第一步 清timer0的中断状态寄存器TINT_CSTAT;
第二步 打印timer0中断发生的次数,每产生一次timer0中断就打印一次。
第三步 VIC相关的中断清除,调用函数intc_clearvectaddr();
第三节 实验现象
终端会不断的打印数字1、2、3、4...,频率为每秒打印1次。
详细代码下载链接:http://download.csdn.net/detail/klcf0220/5741631
S5PV210 PWM定时器的更多相关文章
- S5PV210 PWM
定时器PWM输出 原理图 GPD0CON, R/W, Address = 0xE020_00A0 CON, R/W, Address = 0xE250_0008 相关文章:http://blog.cs ...
- 【春节歌曲回味 | STM32小音乐盒 】PWM+定时器驱动无源蜂鸣器(STM32 HAL库)
l STM32通过PWM与定时器方式控制无源蜂鸣器鸣响 l STM32小音乐盒,歌曲进度条图形显示与百分比显示,歌曲切换 l 编程使用STM32 HAL库 l IIC OLED界面编程,动画实 ...
- S5PV210定时器
在S5PV210内部,一共有4类定时器件.这4类定时器件的功能.特征是不同的. 1.PWM定时器(1)这种是最常用的,平时所说的定时器一般指的是这个.像简单单片机(譬如51单片机)中的定时器也是这类. ...
- [S5PV210 Linux字符驱动之PWM蜂鸣器驱动
在SMDK210.C中添加如下beeper_device 结构体 static struct platform_device beeper_device = { .name = "pwm_b ...
- 定时器及PWM
1 定时器 1.1 定时器分类 对于STM32来说,定时器可分为基本定时器.通用定时器.高级定时器三类,后者包括前者的全部功能.以stm32f1系列为例,TIM6和TIM7为基本定时器,TIM2~TI ...
- S5PV210 看门狗定时和复位
第一节 S5PV210的看门狗定时器S5PV210上的看门狗定时器相当于一个普通的16bit的定时器,它与PWM定时器的区别是看门狗定时器可以产生reset信号而PWM定时器不能,S5PV210看门狗 ...
- Cortex-A9 PWM Timer
PWM定时器 4412时钟为我们提供了PWM定时器,在4412中共有5个32位的定时器,这些定时器可发送中断信号给ARM子系统.另外,定时器0.1.2.3包含了脉冲宽度调制(PWM),并 ...
- 嵌入式davinci电路元素基础和PWM模块
1,DAC_OUT和DAC_OUTB是AD9912输出的差分信号. 2,电容器储存电荷的能力,常用的单位是F.uF.nF.pFUF大了好还是UF小了好,要根据电路自身需要而设计, 要看电路滤波是在高频 ...
- Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动【转】
本文转载自:https://blog.csdn.net/zqixiao_09/article/details/50858776 版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...
随机推荐
- Spring3.x 获取properties资源文件的值
Spring3.x 获取properties资源文件的值有两种方式: 第一种:使用<context:property-placeholder />标签 <context:prop ...
- 【POJ1741】Tree
题目大意:给定一棵 N 个节点的无根树,边有边权,统计树上边权和不大于 K 的路径数. 对于每条树上路径,对于每一个点来说,该路径只有经过该点和不经过该点两种情况,对于不经过该点的情况,可以转化成是否 ...
- [codevs3342][绿色通道]
codevs3342 思路: 既然是要求最小化最长空题段,直接二分答案.然后就是check函数的写法. 先考虑n方转移,假设当前二分的答案是x,用f[i]表示前i个题,第i道题写的最小花费时间.最后再 ...
- zoj3707(Calculate Prime S)解题报告
1.计算(a/b)%c,其中b能整除a 设a=b*r=(bc)*s+b*t 则(b*t)为a除以bc的余数 r=c*s+t 而 (a/b)%c=r%c=t (a%bc)/b=(b*t)/b=t 所以对 ...
- Apache模块 mod_proxy
转: Apache模块 mod_proxy 转自http://www.php100.com/manual/apache2/mod/mod_proxy.html Apache模块 mod_proxy 说 ...
- Hadoop生态圈-离线方式部署Cloudera Manager5.15.1
Hadoop生态圈-离线方式部署Cloudera Manager5.15.1 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 到目前位置,Cloudera Manager和CDH最新 ...
- 函数和常用模块【day05】:不同目录间进行模块调用(八)
本节内容 1.背景 2.函数功能解释 3.绝对路径和相对路径 4.不同目录间进行模块调用 一.背景 之前写了软件开发目录规范这篇博客,相信很多人都已经知道,我们在写程序时需要遵循一定的规范,不然,就算 ...
- mysql -- 动态获取结果集(重点)
注意:语句传值的时候必须是带有@符号的参数,不能是自己的局部变量,一个@叫用户变量,两个@叫做全局变量.用户变量:当前用户的‘’全局变量‘’,用户状态存在时就存在,用户退出时消失. 初始版 delim ...
- redis的入门篇---五种数据类型及基本操作
查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少 ...
- DOM-Element对象
一. 整体介绍 这里介绍DOM对象中Element对象. 那么何为Element对象呢?Element对象就是HTML元素,Element对象包括:元素节点.文本节点.属性节点. 下面利用一张图来总 ...