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开发板裸机程序系列02--按键和蜂鸣器
下一篇:S3C2440开发板裸机程序系列05—定时器PWM
推荐阅读最新更新时间:2024-11-05 18:33
设计资源 培训 开发板 精华推荐
- LT6656AIDC-2.5、2.5V ADC 电压基准和桥式激励电源的典型应用
- LTC2908ITS8-A1、12V、3.3V、2.5V、1.8V、1.5V、1.2V六电源监视器的典型应用电路
- LT3956UHE 演示板、80Vin、80Vout 恒流、恒压转换器
- JTAG转接板
- 5V充电器
- 基于 TB62736FUG 升压 DC-DC 转换器的白光 LED 典型应用
- LT8330IS6 48V 升压转换器的典型应用电路
- ADR360B、2.048V 低功耗、低噪声电压基准的典型应用,用于调整配置
- 【物联网类】基于ESP8266的AIOT开发板
- LT3756EMSE-2 演示板、100Vin、100Vout LED 控制器