蜂鸣器遇到问题了
先简要介绍一下我想实现的功能,我用了两个定时器来分别控制ARM板上的蜂鸣器和LED,想要实现每秒钟LED和蜂鸣器交替变化,目前LED能实现亮灭变化,可是蜂鸣器却一直没有响,感觉中断3函数就没有进去,不知道问题出在哪里,请大神帮忙。#include "2440addr.h"
void Timer2Init(void)
{
rTCFG0 = 124 << 8; // t0 预分频
rTCFG1 = 0x03 << 8; // 1/16 intrupt mod
// PCLK / 125 / 16 / = 101.25 MHz / 125 / 16 / 50 = 1KHz ;1ms
rTCNTB2 = 50625; // 1s
rTCON = (1<<15)|(1<<14)|(1<<13)|(0<<12); // 自动装载 反相输出 手动加载 不启动
rTCON = (1<<15)|(1<<14)|(0<<13)|(1<<12); // 自动装载 反相输出 清手动加载 启动
//开中断,直接用PWM驱动beep,此时中断服务程序里面可以改变rTCMPB0,从而改变占空比
EnableIrq(BIT_TIMER2);
return ;
}
void Timer3Init(void)
{
rTCFG0 = 124 << 12; // t0 预分频
rTCFG1 = 0x03 << 12; // 1/16 intrupt mod
// PCLK / 125 / 16 / = 101.25 MHz / 125 / 16 / 50 = 1KHz ;1ms
rTCNTB3 = 50625; // 1s
rTCON = (1<<19)|(1<<18)|(1<<17)|(0<<16); // 自动装载 反相输出 手动加载 不启动
rTCON = (1<<19)|(1<<18)|(0<<17)|(1<<16); // 自动装载 反相输出 清手动加载 启动
//开中断,直接用PWM驱动beep,此时中断服务程序里面可以改变rTCMPB0,从而改变占空比
EnableIrq(BIT_TIMER3);
return ;
}
void Led_Buzzer_Init()
{
rGPBCON = (1<<16) | (1<<14) | (1<<12) | (1<<10) | (1<<0); //GPB5-8 output
rGPBDAT = (0<<8) | (0<<7) | (0<<6) | (0<<5) | (0<<0); //on
return ;
}
/*void LedInit(void)
{
rGPBCON = (1<<16) | (1<<14) | (1<<12) | (1<<10); //GPB5-8 output
rGPBDAT = (0<<8) | (0<<7) | (0<<6) | (0<<5); //on
}*/
// BUZ-TOUT0/GPB0
/*void BuzzerInit(void)
{
//rGPBCON = (2 << 0); // TOUT0
rGPBCON |= (1 << 0);
rGPBDAT |= (1 << 0);
return ;
}*/
void Handle_Timer2() // led irq
{
rGPBDAT = 0x1E0 ^ rGPBDAT;
//rGPBDAT = rGPBDAT ^ 0x001;
ClearPending(BIT_TIMER2);
return ;
}
void Handle_Timer3() // buzzer irq
{
rGPBDAT = rGPBDAT ^ 0x001;
//rGPBDAT = 0x1E0 ^ rGPBDAT;
ClearPending(BIT_TIMER3);
return ;
}
int main()
{
//LedInit();
//BuzzerInit();
Led_Buzzer_Init();
Timer3Init(); //buzzer irq
Timer2Init(); //led irq
while(1)
{
;
}
return 0;
}