S3C2440裸机实验之timer(定时器)
来源:互联网 发布:图片涂鸦软件 编辑:程序博客网 时间:2024/05/29 07:17
S3c2440 有5 个16 位的定时器。定时器0、1、2、3 有脉宽调制功能(PWM)。定时器4有一个没有输出引脚的内部定时器。定时器0 有一个用于大电流设备的死区生成器。
定时器0 和1 共享一个8 位的预分频器(预定标器),定时器2,3,4 共享另一个8 位预分
频器.
定时器的时钟源为PCLK,首先经过预分频器降低频率后,进入第二个分频.可以生成5 种不同的分频信号(1/2,1/4,1/8,1/16 和TCLK)
定时器启动后,TCNTn开始减一计数,当TCNTn 等于TCMPn时, TOUTn 反转, TCNTn继续减数.
当TCNTn= 0 时, TOUTn 再次反转,并触发中断(中断已经使能).
若TCON 设为自动加载, TNCTn/TCMPNn 的值被重装.
寄存器:
TCFG0: 配置两个8 位预分频器, [15:8] 此8 位决定定时器2,3,4 的预标定器值,[7:0] 此8 位决定定时器0,1 的预标定器值
输出频率: = PCLK / (prescaler value + 1)
TCFG1:
用于设置第二个分频.可以设置5 种不同的分频信号(1/2,1/4,1/8,1/16 和TCLK)
至此可得到
定时器工作频率=PCLK / (prescaler value + 1) / (divider value)
divider value = 2,4,8, 16
TCON: 定时器控制寄存器
TCNTBn :设置一个被装载到递减计数器中的初始值。
TCMPBn: 设置一个被装载到比较寄存器中用来和递减计数
器的值作比较的初始值。
TCNTOn : 通过读取其可以得到TCNTBn 的值
定时器初始化示例:
void timer0_init(void)
{
TCFG0 = 99; // 预分频器0 = 99
TCFG1 = 0x03; // 选择16分频
TCNTB0 = 31250; // 0.5秒钟触发一次中断
TCON |= (1<<1); // 手动更新
定时器0 和1 共享一个8 位的预分频器(预定标器),定时器2,3,4 共享另一个8 位预分
频器.
定时器的时钟源为PCLK,首先经过预分频器降低频率后,进入第二个分频.可以生成5 种不同的分频信号(1/2,1/4,1/8,1/16 和TCLK)
定时器启动后,TCNTn开始减一计数,当TCNTn 等于TCMPn时, TOUTn 反转, TCNTn继续减数.
当TCNTn= 0 时, TOUTn 再次反转,并触发中断(中断已经使能).
若TCON 设为自动加载, TNCTn/TCMPNn 的值被重装.
寄存器:
TCFG0: 配置两个8 位预分频器, [15:8] 此8 位决定定时器2,3,4 的预标定器值,[7:0] 此8 位决定定时器0,1 的预标定器值
输出频率: = PCLK / (prescaler value + 1)
TCFG1:
用于设置第二个分频.可以设置5 种不同的分频信号(1/2,1/4,1/8,1/16 和TCLK)
至此可得到
定时器工作频率=PCLK / (prescaler value + 1) / (divider value)
divider value = 2,4,8, 16
TCON: 定时器控制寄存器
TCNTBn :设置一个被装载到递减计数器中的初始值。
TCMPBn: 设置一个被装载到比较寄存器中用来和递减计数
器的值作比较的初始值。
TCNTOn : 通过读取其可以得到TCNTBn 的值
定时器初始化示例:
void timer0_init(void)
{
TCFG0 = 99; // 预分频器0 = 99
TCFG1 = 0x03; // 选择16分频
TCNTB0 = 31250; // 0.5秒钟触发一次中断
TCON |= (1<<1); // 手动更新
TCON = 0x09; // 自动加载,清“手动更新”位,启动定时器0
}
- S3C2440裸机实验之timer(定时器)
- s5pv210裸机实验之定时器
- S3C2440裸机实验之clock(时钟设置)
- S3C2440裸机实验(1)-----clock
- S3C2440裸机实验(2)-----uart
- S3C2440裸机实验(3) ----watchdog
- s3c2440裸机实验(5)----IIS
- S3C2440裸机实验(6) ----NAND FLASH
- S3C2440裸机实验(7)----LCD驱动
- S3C2440裸机实验(1)-----uart
- S3C2440裸机实验
- S3C2440裸机实验(4) -----IIC
- S3C2440裸机之S3C2440GPIO
- s3c2440裸机程序之----LED
- S3C2440之IIC裸机驱动
- S3C2440之定时器
- 裸机实验之MMU
- 字符设备之笔记-定时器(timer)
- SC2012_VMM详细安装过程
- IEEE802.3具体格式
- 汉诺塔 非递归
- TCP三次握手及四次挥手详细图解
- 多核多线程同步
- S3C2440裸机实验之timer(定时器)
- 在FLV文件的TAG中写入H264数据
- Beyond MapReduce:谈2011年风靡的数据流计算系统(转)
- 1分钟内保护你的Linux服务器—Server Shield v1.0.2
- 用代码和UML图化解设计模式之《抽象工厂模式》
- 关于warning C4512: “`anonymous-namespace'::******”: 未能生成赋值运算符
- linux小技巧——添加永久生效的路由
- WINDOWS SERVER 2008密码丢失的处理(IBM x3650 m3)
- 收集几道题目