找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3217|回复: 1
打印 上一主题 下一主题
收起左侧

2440裸机编程之五 定时器

[复制链接]
跳转到指定楼层
楼主
ID:68618 发表于 2014-11-12 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
S3C2440A 具有5 个16 位定时器,每个定时器可以按照中断模式或DMA 模式工作。定时器0,1,2,3 具有PWM 功能。定时器4 是一个内部定时器,不具有对外输出口线。定时器0 还具有死区发生器,通常用于大电流设备。
定时器特性总结如下。
● 5 个16 位定时器可以工作在中断模式或DMA 模式。
● 包括2 个8 位预分频器、2 个4 位分割器。
● 输出波形的占空比可用编程控制(即进行脉宽调制)。
● 具有自动重载模式或单次触发模式。
● 具有死区发生器。



与定时器相关的寄存器有:TCFG0、TCFG1、TCON、TCMPBn、TCNTBn、TCNTOn
定时器的频率由PCLK分频而来,即Ftimer = PCLK / (prescaler+1) / MUX
prescaler位于TCFG0,MUX位于TCFG1
TCON控制定时器的运行:是否自动装载定时器初值,是否手动装载,开始/停止 定时器。
TCNTBn放定时器n的初值,装载用
TCMPBn放定时器n的匹配值,用于调至PWM
TCNTOn,只读,用于观察定时器n的初值

编程方法如下:
定时器初始化()
{
设置预分频器prescaler (TCFG0)
设置MUX    (TCFG1)
赋初值TCNTB    TCNTB    =   (PCLK / (prescaler+1) / MUX) * 中断时间间隔(单位秒)
TCON: 手动跟新打开   
手动跟新关闭
自动装载(计时器循环计数)
启动定时器  
}

中断初始化()
{
清除SRCPNF、INTPND中的相应中断标志位(可以调用ClearPending函数)
填入中断例程地址于中断向量表 pISR_EINTx
使能相应中断 rINTMSK
}

中断例程()  __irq
{
……中断程序……
清除SRCPNF、INTPND中的相应中断标志位
}

下面是定时器0试验程序:
//************************************************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

int_time0_init();
time0_init();
while(1);
}
void int_time0_init(void)
{
Uart_Printf("Timer0中断实验\n");
ClearPending(1<<10);     //清楚中断标志
pISR_TIMER0=(unsigned)timer0_ISR;  //填入中断例程地址于中断向量表
rINTMSK&=~(1<<10);       //TIME1开中断
}
void  time0_init(void)
{
rTCFG0 = rTCFG0 &(~0xFF) | 175;   //设置预分频器prescaler0 = 175
rTCFG1 = rTCFG1 &(~0xF) | 2;   //设置MUX0 = 1/8
rTCNTB0 = PCLK/(175+1)/8;      //一秒,注意右值别溢出16位
rTCON |= 1<<1;       //开启手动更新,将TCNTB0的值载入定时器0
rTCON &= ~(1<<1);      //关闭手动更新(必须)
rTCON |= 1<<0 | 1<<3;     //开启定时器,自动装载模式

//关于中断时间的设定:    TCNTB =(PCLK / (prescaler+1) / MUX) *  中断时间间隔(单位秒)
}
void timer0_ISR(void)  __irq
{
n++;
Uart_Printf("Timer0 已经中断 %d 次\n",n);
ClearPending(1<<10);     //清楚中断标志
}
//***********************************************************************************************************
运行结果如下:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:45457 发表于 2015-9-11 19:08 | 只看该作者
2440裸机编程之五 定时器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表