定时器1的设置 s5pc100

本文介绍了如何在S5PC100芯片上设置定时器1,通过设置TCFG1寄存器将分频值设为16,使得在66MHz的PCLK下,定时器频率变为16.1KHz。当定时器缓冲器的值与比较缓冲器相等及降至0时,会触发脉冲变化和中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <s5pc100.h>

void timer1_int()
{
    TINT_CSTAT |= 1<<6; //清除定时器1中断状态
    VIC0ADDRESS = 0;
}

void do_irq()
{
    ( (  void(*)(void)  )VIC0ADDRESS)();  //执行中断处理函数
}

void main()
{
    TINT_CSTAT |= 1 << 1;  //打开定时器1的中断屏蔽
    TIMER.TCFG0 |= 0xff; //设置定时器0和1的预分频值为255

    TIMER.TCFG1 |= 0x4 << 4;//设置定时器0和1的分频值为16    PCLK=66MHz, PCLK/(255+1)/16 = 16.1KHz


//当缓冲器的值减到与比较缓冲器的值相等时,会发生脉冲变化,当缓冲器的值继续减到0时,脉冲也会发生变化,并触发中断

    TIMER1.TCNTB1 = 0x7d48;  //设置缓冲器的值
    TIMER1.TCMPB1 = 0x7d48 / 2;  //设置比较缓冲器的值  
    TIMER.TCON = 0x0e << 8;   //手动更新,使缓冲器的值到计数器里面,双缓冲机制 起始,位为低电平
    TIMER.TCON = 0x0d << 8;  //清除手动更新位,并启动定时器

    VIC0INTERRUPT.VIC0INTENABLE |= 1<<22; //打开定时器1的中断使能
    VIC0VECTADDR.VIC0VECTADDR22 = (unsigned int)timer1_int; //注册定时器1函数

    GPD.GPDCON |= 2<<4; //设置蜂鸣器引脚为TOUT1输出

    while(1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值