历史上的今天
返回首页

历史上的今天

今天是: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;

}


推荐阅读

史海拾趣

大毅科技公司的发展小趣事

为了进一步提升产品质量和竞争力,大毅科技积极申请并获得了多项国际品质认证,如ISO9001、ISO14001、TS16949等。这些认证不仅证明了大毅科技在品质管理方面的卓越能力,还为公司打开了通往国际市场的大门。随着认证的不断增多,大毅科技的产品开始出口到全球各地,与索尼、雅马哈等知名企业建立了长期合作关系。

ADI(亚德诺半导体)公司的发展小趣事

为了进一步提升产品质量和竞争力,大毅科技积极申请并获得了多项国际品质认证,如ISO9001、ISO14001、TS16949等。这些认证不仅证明了大毅科技在品质管理方面的卓越能力,还为公司打开了通往国际市场的大门。随着认证的不断增多,大毅科技的产品开始出口到全球各地,与索尼、雅马哈等知名企业建立了长期合作关系。

宜源科技(ETERNAL)公司的发展小趣事

宜源科技公司非常重视人才培养和团队建设。公司建立了一套完善的人才培养体系,为员工提供丰富的培训和发展机会。同时,宜源科技还积极引进优秀人才,打造高素质、专业化的技术和管理团队。这些团队在公司的各个领域中发挥着重要作用,为公司的长远发展提供了有力的人才保障。

C-MAX Time Solutions公司的发展小趣事

随着业务的不断发展,C-MAX Time Solutions公司开始寻求与行业内其他企业的战略合作。通过与一家知名通信设备制造商的合作,C-MAX成功将其时间同步技术融入对方的设备中,从而实现了产品的互补和市场的共同开拓。这一合作不仅拓宽了C-MAX的业务范围,也提高了其品牌在行业内的知名度和影响力。

Fortiming Corporation公司的发展小趣事

背景:随着公司规模的扩大和产品线的丰富,Fortiming开始寻求更广阔的市场空间。

发展:公司积极参加国内外电子展会,展示其最新技术和产品,吸引了众多客户的关注。同时,Fortiming还与国际知名电子企业建立了合作关系,共同开发新产品,开拓新市场。这些合作不仅提升了Fortiming的品牌影响力,还为公司带来了更多的商业机会。

Barry Industries Inc公司的发展小趣事

在国内市场取得一定成绩后,Barry Industries Inc开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,Barry还积极寻求与国际先进技术的交流与合作,不断提升自身的技术水平和产品质量。

问答坊 | AI 解惑

如何看FLASH芯片的型号,识别其容量

如题,怎么样查看FLASH芯片的型号,识别其容量 比如sst 39VF6401B大小怎么看了,路过大侠来指点下啊!…

查看全部问答>

测试阻抗时测量错误的潜在来源

测试阻抗时测量错误的潜在来源…

查看全部问答>

【藏书阁】电路分析基础课件

第1章 电路的基本概念和定律 34页.ppt 第2章 电阻性网络分析的一般方法 38页.ppt 第3章 一阶动态电路分析 61页.ppt 第4章 正弦稳态电路分析 59页.ppt 第5章 耦合电感元件合理想变压器 40页.ppt 第6章 二端口网络 65页.ppt 第7章 谐振电路 22 ...…

查看全部问答>

主板元件烧毁

如何分析主板元器件烧毁的原因? 具体有哪些分析思路?…

查看全部问答>

郁闷,在南京华龙电子城买的Max232,通电后发烫

在二楼迈尔奇买的,电路是典型的,电源用的是线性的5V。这一批232批号是0909。 今年年初买了一批也是 通电后发烫,和我的电脑连接测试,竟然将电脑串口搞坏了。那次拿去换,很爽快的给我换了,说拿错了, 拿国产的给我了,既然换了我也没追究。 ...…

查看全部问答>

关于单片机中断系统的应用

正在学操作系统,刚好了解到“分时处理”相关知识,想用C51的Timer实现。有没有哪位做过,指点一下。…

查看全部问答>

WINCE 下ADSL拨号上网问题

wince5.0 我的板子不用ADSL线,用公司网络上网正常,说明网卡及驱动没有问题! 我用ADSL线直接接我的PC,通过输入用户名及密码,正常登录,并正常浏览网页,说明ADSL线及账户没有问题! 我的问题是: ADSL线接上我的板子,创建PPPOE后,只要一 ...…

查看全部问答>

单片机控制步进电机问题

我用单片机(AT89S52)控制步进电机,代码如下,出现的问题是:开始按正转,停止和反正,运行正常,按下加速和减速按钮,电机转速只能改变一点,然后再按正转,停止和反转按钮就不起作用了,请高手帮我看看是什么问题?先谢谢大家。 [ 本帖最后由 ...…

查看全部问答>

信号接收 发送问题

最近因为项目需要,需要解决一个问题,主要思路是:通过TI DSP2812与DAC芯片连接产生4KHZ左右的正弦波,然后将4KHZ的正弦波经过AD转换再传回到DSP2812中,检查数据的变化(主要是检测相位变化)。我想选择一款芯片,看见有款TLV320AIC23的芯片,可 ...…

查看全部问答>

时钟偏斜大于数据延迟在Quartus II 9.1 如何修改

问题就是这样的,怎么改时序约束啊,具体步骤,我对Quartus II 9.1 不是很熟啊…

查看全部问答>