Timer



//=========================================================================
//  工程名称: Demo_2440_timer  
//  组成文件: timer.c
//  功能描述: 实现0.5S的定时输出信息,练习定时器的使用
//  硬件连接:
//=========================================================================


#include "2440addr.h"
#include "uart.h"
#include "2440lib.h"
     
void Timer_init(void);
void __irq timer0Handler(void);


int Main(void) 
{    
int i = 0,j=0;
memcpy(0x0,(unsigned char *)0x30000000,0x1000);     //拷贝程序到0地址


ChangeMPllValue(0x5c,1,1); //FCLK = 400M
ChangeClockDivider(14,12); //HCLK = 100M , PCLK = 50M


Uart_Select(0);
myUart_Init(50000000,115200);


Uart_Printf("Timer Test\n");
Timer_init();


  rTCON &= ~(0x0f<<0);   //寄存器清0
rTCON |= (0x09<<0);    //启动定时器
while(1);


}


void Timer_init(void)
{


rTCFG0 &= ~(0xff<<0);   //寄存器清0
rTCFG0 |= (0x63<<0);    //prescaler0 100     timer0的时钟频率为50M/100 = 0.5MHz
  
  rTCFG1 &= ~(0x0f<<0);   //寄存器清0
  rTCFG1 |= (0x01<<0);    //divide value 1/4   timer0的时钟频率为50M/100/4 = 0.5MHz/4 = 125KHz
  
rTCNTB0 = 62500;   //设置Timer初值 n=f*t=125K × 0.5s = 62500;


  rTCON &= ~(0x0f<<0);    //寄存器清0 ,以一个定时器的控制位为单位进行设置
  rTCON |= (0x02<<0);   //自动重载, 反向关闭,手运装载初值 ,暂不启动(第一次启动前先得手运装载一次初值)


pISR_TIMER0=(unsigned)timer0Handler; //建立中断向量表
EnableIrq(BIT_TIMER0);
}


void __irq timer0Handler(void)
{
static int cont_num = 0;
cont_num++;
Uart_Printf("timer0 test cont: %d\n",cont_num);

    ClearPending(BIT_TIMER0);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值