S3C2440开发板裸机程序系列03--定时器

发布者:Huayu8888最新更新时间:2021-10-14 来源: eefocus关键字:S3C2440  开发板  裸机程序  定时器 手机看文章 扫描二维码
随时随地手机看文章

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;

}


关键字:S3C2440  开发板  裸机程序  定时器 引用地址:S3C2440开发板裸机程序系列03--定时器

上一篇:S3C2440开发板裸机程序系列02--按键和蜂鸣器
下一篇:S3C2440开发板裸机程序系列05—定时器PWM

推荐阅读最新更新时间:2024-11-05 18:33

GPIO-点亮一个LED(JZ2440-S3C2440)
1、看电气原理图 GPF4--------(GPFCON =01; GPFDAT =1) GPF4引脚输出1(高电平):LED1灯灭。 GPF4引脚输出0(低电平):LED1电亮。 2、如何让引脚输出高/低电平 (1)配置引脚功能(2)输出引脚:写值到某个寄存器;输入引脚:读寄存器的值。 3、看芯片手册 GPIO包括A----J组。 这里要用到GPF组的寄存器: GPFCON寄存器:用来配置引脚的功能; GPFDAT:引脚的值。 GPFCON寄存器的可以设置引脚的功能为:输入、输出、中断和保留功能。 GPFDAT寄存器: 4、编写程序:GPFCON的地址为0x56000050。G
[单片机]
GPIO-点亮一个LED(JZ2440-S3C2440)
PIC16F877A开发板 数码管动态扫描实验
//************************************************************************* #include pic.h #include ../head/config.h __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN); //HS振荡,禁止看门狗,低压编程关闭,启动延时定时器 #define srclk RC3 //移位寄存器时钟 (74595:11脚) #define rclk RC4 //存储寄存器时钟 (74595:12脚) #define ser RC5 //串行数据口 (74595:14脚)
[单片机]
lwIP+ucos2移植于S3C2440过程
一般采用的步骤: 1.深入了解所采用的系统核心 2.分析所采用的C语言开发工具的特点. 3.编写移植代码. 4.进行移植的测试 5.针对项目的开发平台,封装服务函数. 首先,是芯片的中断处理机制,如何开启,屏蔽中断,可否保存前一次中断状态,芯片是否有软中断或陷阱指令 已经将图片移植成功,是一件很快乐的事情. 现在要将网络也加进去,看一看,想什么办法能够办到. 将lwip组织起来: lwipopts.h cc.h timer.h Timer0_Init(void) Timer1_Init(void) Delay10ms(unsigned short T) ; Undefine_Init(void) ; volatil
[单片机]
STM32定时器之定时时间
STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。 时钟源问题: 名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在 APB1总线上。其中TIM1&TIM8称为高级控制定时器(advanced control timer).他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。 下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作
[单片机]
s3c2440硬件篇之二:SDRAM
从NandFlash启动CPU的时候,CPU会自动通过其内部硬件结构复制NandFlash中的前4K代码到cpu的自带SRAM中,注意这是CPU自带的SRAM,区别于本文所讲的SDRAM,本文所指的SDRAM是外接SDRAM,开发板对应的芯片为K4S561632,即内存。 一般来说,嵌入式系统都有NandFlash(硬盘)和SDRAM(内存),我们把程序烧到NanFlash中,然后选择从NandFlash启动CPU,CPU启动后会自动复制NandFlash中前4K代码到CPU的SRAM中,这前4K代码接着完成程序从NandFlash复制到SDRAM的任务。 参考韦东山大哥的书,做了sdram的实验: (1)head.S,这
[单片机]
<font color='red'>s3c2440</font>硬件篇之二:SDRAM
单片机定时器介绍
定时器是单片机系统的一个重点,但并不是难点,大家一定要完全理解并且熟练掌握定时器的应用。 1) 时钟周期 时钟周期 T 是时序中最小的时间单位,具体计算的方法就是 1/时钟源频率,我们 KST-51 单片机开发板上用的晶振是 11.0592M,那么对于我们这个单片机系统来说,时钟周期=1/11059200 秒。 2) 机器周期 我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而 C 语言一条语句的时间是不确定的,受到诸多因素的影响。51单片机系列,在其标准架构下一个机器周期是 12 个时钟周期,也就是 12/11
[单片机]
STM8S定时器基本中断定时
STM8S的定时器分三类; 高级定时器TIM1 通用定时器TIM2,TIM3,TIM5 基本定时器TIM4,TIM6 其中除TIM4和TIM6是8位定时器外,其他的定时器都是16位计数的。 每个定时器都具有自动重装载功能 每个定时器的时钟都可以由系统时钟独立分频而来,其中高级定时器TIM1可以选择65536种分频,分频系数为1-65536.通用定时器可以选择16种分频,基本定时器只能选择8种分频。 除了TIM1可以选择计数方向外,其他的定时器都是向下计数的,而技术手册上说的向上计数是错误的。 基本中断定时用到的寄存器; 一、自动装载寄存器高位(TIMx_ARRH) 和 自动装载寄存器低位(TIMx_
[单片机]
第五章 搭建S3C6410开发板的测试环境 心得笔记
一、S3c6410一款比较典型的开发板,集成了各种部件。它是由三星公司推出的一款低功耗、高性价比的RISC处理器,它基于ARM11内核,可广泛应用于移动电话和通用处理等领域。串口通信就是通过使用开发板可以用某些方式显示linux驱动程序输出的调试信息。而PC需要与串口设备通信就需要在PC上安装接收和发送串口数据的程序,例如minicom。 二、要想使用该型号的开发板 1 安装串口调试工具:minicom: 第一步,检测当前系统是否支持USB转串口 #lsmod | grep usbserial; 第二步,安装minicom #apt_get install minico
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved