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: ...
随机推荐
- 二分图判定 POJ-2492
这是由AC代码改的模板,不能直接交啊 #include<iostream> #include<vector> #include<cstring> using nam ...
- 地址空间格局随机化ASLR
Address space layout randomization(ASLR)是一种参与保护缓冲区溢出问题的一个计算机安全技术.是为了防止攻击者在内存中能够可靠地对跳转到特定利用函数.ASLR包括随 ...
- 关于mysql数据库优化
关于mysql数据库优化 以我之愚见,数据库的优化在于优化存储和查询速度 目前主要的优化我认为是优化查询速度,查询速度快了,提高了用户的体验 我认为优化主要从两方面进行考虑, 优化数据库对象, 优化s ...
- 到浏览器顶部的获取js和jquery
获取当前窗口到页面顶端高度: js: document.documentElement.scrollTop JQ:$(document).scrollTop()或者$(window).scrollTo ...
- ARP协议原理学习
一.ARP的作用. 首先在window 的命令行中输入arp -a即可查看本机的arp缓存表.主机要发送数据包时,需要填充目的IP及其IP地址对应的MAC.当我们只有目的IP地址时,如何得到其对应的M ...
- 收到offer!
今天收到了自己中意的offer,公司在上海,这也意味着自己毕业后的第一份工作也要结束了. 要说再见了,杭州,尽管相处的时间不久,也认识了一些朋友.还得向他们做声道别. 心情滋味难名,短短的一年,自己由 ...
- CentOS下查找java环境变量
CentOS下通过命令查找java环境变量 [root@yuteng opt]# echo $JAVA_HOME /usr/java/default [root@yuteng opt]# which ...
- kruskal算法:POJ No.3723 Conscription_最小生成树应用_最大权森林
#define _CRT_SECURE_NO_WARNINGS /* 5 5 8 4 3 6831 1 3 4583 0 0 6592 0 1 3063 3 3 4975 1 3 2049 4 2 2 ...
- 关闭MySQL数据库的几种方法
#1.使用mysqldadmin mysqladmin -uroot -p shutdown mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/$ ...
- ARMCortex系列仿真调试器
主流的调试工具1. J-LinkJ-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产.提供对市面上几乎所有ARM内核芯片的支持.目前最新版本的J-Link产品为V8,支持JT ...