历史上的今天
今天是:2024年10月14日(星期一)
2021年10月14日 | S3C2440开发板裸机程序系列03--定时器
2021-10-14 来源:eefocus
1. S3C244时钟系统
与时钟有关的关键词:
Fin – 外部输入的晶振频率,TQ2440外接晶振是12MHz;
FCLK – 用于CPU核,即CPU核的频率;
HCLK – 用于AHB(Advanced High Performance Bus)总线上的设备,包括存储控制器,LCD控制器,DMA等;
PCLK – 用于APB(Advanced Peripheral Bus)总线上的低速设备,包括定时器,UART,ADC等
模式控制引脚OM3和OM2的组合关系决定了S3C2440的时钟源。
S3C2440有2个锁相环(PLL): MPLL提供给FCLK、HCLK、PCLK,UPLL专用于USB模块。
设置FCLK、HCLK、PCLK使用到2个控制寄存器:MPLLCON和CLKDIVN。
前面的例子代码中,启动代码option.inc中定义了相关参数。

可知,FCLK=200MHz,HCLK=100MHz,PCLK=50MHz
2. 定时器原理
S3C2440有5个16位定时器,其中定时器0、1、2和3具有PWM功能,定时器4是无输出引脚的内部定时器。
定时器0和1公用一个预分频器,定时器2、3、4公用另外一个预分频器。时钟分频器可以再次进行5种不同分频信号的分频。

2.1 设置定时器频率
TCFG0 – 控制定时器频率,8位可编程预分频器
TCFG1 – 控制定时器频率,多路开关

如设置Timer0的输入频率为62.5kHz,则
50MHz / 62.5kHz =800 ==> TCFG1为8分频,TCFG0为99(99+1=100)
rTCFG0 &=~(0xFF);
rTCFG0 |= 99;
rTCFG1 &=~(Ox0F);
rTCFG1 |= 2;
2.2 设置定时器工作模式
TCON寄存器 (以定时器1为例)--- 控制定时器工作模式及开启状态

PWM定时器内部原理:

TCMPn和TCNTn是内部寄存器,不用设置。
TCNTBn(Timer Count Buffer register)是装入初始值。
TCMPBn(Timer Compare Buffer register)是装入比较值。
TCON[9]=1时,将TCNTB1和TCMPB1的值分别装入内部的TCNT1和TCMP1。
TCON[8]=1时,TCNT1进行减1计数,当TCNT1=TCMP1时,TOUT1取反。
启动一个定时器:

当定时器减1计数为0时,SRCPND(Source Pending)相应位将置1,通过检测相应位来判断定时时间到。(默认定时器中断为屏蔽,所以定时器中断没有打开)。清除定时器中断标志的方法是,再次向SRCPND相应位写入1。
SRCPND

3. 定时器应用
定时器1设置为62.5kHz,用它来定时Led,每秒Led1亮灭一次,且Led1亮时Beep响。
timer.h
#ifndef __TIMER_H__
#define __TIMER_H__
extern void Timer1_Init(void);
#endi
timer.c
#include "2440addr.h"
void Timer1_Init(void)
{
rTCFG0 &= ~(0xFF);
rTCFG0 |= 99; //Prescaler0 = 99
rTCFG1 &= ~(0xF<<4);
rTCFG1 |= (2<<4); //MUX1 = 1/8
rTCNTB1 = 62500; //Timer1 1sec中断1次
rTCON |= (1<<9);
rTCON = (9<<8); //Timer1 on
}
Main.c
#include "led.h"
#include "common.h"
#include "key.h"
#include "beep.h"
#include "timer.h"
int Main()
{
int flag = 0;
Led_Init();
Key_Init();
Beep_Init();
Timer1_Init();
while(1)
{
if(rSRCPND & (1<<11)){
flag = !flag;
rSRCPND |= (1<<11);
}
if(1==flag){
LED01_ON;
Beep_On();
}else{
LED01_OFF;
Beep_Off();
}
}
return 0;
}
史海拾趣
|
第1章 电路的基本概念和定律 34页.ppt 第2章 电阻性网络分析的一般方法 38页.ppt 第3章 一阶动态电路分析 61页.ppt 第4章 正弦稳态电路分析 59页.ppt 第5章 耦合电感元件合理想变压器 40页.ppt 第6章 二端口网络 65页.ppt 第7章 谐振电路 22 ...… 查看全部问答> |
|
在二楼迈尔奇买的,电路是典型的,电源用的是线性的5V。这一批232批号是0909。 今年年初买了一批也是 通电后发烫,和我的电脑连接测试,竟然将电脑串口搞坏了。那次拿去换,很爽快的给我换了,说拿错了, 拿国产的给我了,既然换了我也没追究。 ...… 查看全部问答> |
|
wince5.0 我的板子不用ADSL线,用公司网络上网正常,说明网卡及驱动没有问题! 我用ADSL线直接接我的PC,通过输入用户名及密码,正常登录,并正常浏览网页,说明ADSL线及账户没有问题! 我的问题是: ADSL线接上我的板子,创建PPPOE后,只要一 ...… 查看全部问答> |
|
我用单片机(AT89S52)控制步进电机,代码如下,出现的问题是:开始按正转,停止和反正,运行正常,按下加速和减速按钮,电机转速只能改变一点,然后再按正转,停止和反转按钮就不起作用了,请高手帮我看看是什么问题?先谢谢大家。 [ 本帖最后由 ...… 查看全部问答> |









