?? 2440beep.c
字號:
#include "2440addr.h"
#include "2440lib.h"
#include "def.h"
void Buzzer_Freq_Set( U32 freq );
void Buzzer_Stop( void );
void BUZZER_PWM_Test( void );
void xmain(void)
{
ChangeClockDivider(3,1);//1:3:6
ChangeMPllValue(127,2,1); //405MHZ
Port_Init();
Isr_Init();
Uart_Init(0, 115200);
Uart_Select(0);
Uart_Printf("the main is running\n");
BUZZER_PWM_Test();
}
/****************************************************************************
【功能說明】蜂鳴器PWM測試
****************************************************************************/
void Buzzer_Freq_Set( U32 freq )
{
//set GPB1 as TOUT1, pwm output
rGPBCON = rGPBCON &~(3<<2)|(1<<3);
rTCFG0 = rTCFG0 &~(0xff)|(15);
rTCFG1 = rTCFG1 &~(0xf<<4)|(1<<5);
rTCNTB1 = (PCLK>>7)/freq;
rTCMPB1 = rTCNTB1>>1; // 50%
//disable deadzone, auto-reload, inv-off, update TCNTB1&TCMPB1, start timer 1
rTCON = rTCON &~(0xf<<8)|(0xb<<8);
rTCON &= ~(1<<9); //clear manual update bit
}
void Buzzer_Stop( void )
{
rGPBCON &= ~12; //set GPB1 as output
rGPBCON |= 4;
rGPBDAT &= ~1;
}
void BUZZER_PWM_Test( void )
{
U16 freq = 2000 ;
Uart_Printf( "\nBUZZER TEST ( PWM Control )\n" );
Uart_Printf( "Press +/- to increase/reduce the frequency of BUZZER !\n" ) ;
Uart_Printf( "Press 'ESC' key to Exit this program !\n\n" );
Buzzer_Freq_Set( freq ) ;
while( 1 )
{
U8 key = Uart_Getch();
if( key == '+' )
{
if( freq < 20000 )
freq += 100 ;
Buzzer_Freq_Set( freq ) ;
}
if( key == '-' )
{
if( freq > 100 )
freq -= 100 ;
Buzzer_Freq_Set( freq ) ;
}
Uart_Printf( "\tFreq = %d\n", freq ) ;
if( key == ESC_KEY )
{
Buzzer_Stop() ;
return ;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -