📄 test_pwm.c
字号:
/****************************************************************************
【文 件 名 称】main.c
【功 能 描 述】三星S3C2410A板demo程序代码
【程 序 版 本】4.0
【创建人及创建日期】icesoar//2002年11月19日19:26
【修改人及修改日期】icesoar//2004-12-8 17:25
****************************************************************************/
//***************************************************************************
#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"
#include "utils.h"
#define MaxBeepFreq 20000
#define MinBeepFreq 20
void Beep(U32 freq, U32 ms)
{
rGPBCON &= ~3; //set GPB0 as tout0, pwm output
rGPBCON |= 2;
rTCFG0 &= ~0xff; //与背光共用一个预分频器
rTCFG0 |= 0; //prescaler = 0 + 1
rTCFG1 &= ~0xf;
rTCFG1 |= 3; //mux = 1/16
rTCNTB0 = (GetMasterClock()>>4)/freq;
rTCMPB0 = rTCNTB0>>2; // 50%
rTCON &= ~0x1f;
rTCON |= 0xb; //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
rTCON &= ~2; //clear manual update bit
Delay(ms);
rGPBCON &= ~3; //set GPB0 as tout0, pwm output
rGPBCON |= 1;
rGPBDAT &= ~1;
}
/****************************************************************************
【功能说明】系统主函数
****************************************************************************/
void TestPwm(void)
{
U16 BeepFreq = 500;
// U16 ratio = 50;
printf( "S3C2410A PWM Test( Beep ) !\n\n" ) ;
printf( "Press +/- to increase/reduce the frequency of beep !\n" ) ;
//printf( "Press h/l to increase/reduce the hi-ratio of beep !\n" ) ;
printf( "Press 'ESC' to Exit this test program !\n\n" );
Beep(BeepFreq, 200);
while( 1 )
{
U8 key;
key = getch();
putch( key );
if( key == '+' )
if( BeepFreq < 20000 )
BeepFreq += 100 ;
if( key == '-' )
if( BeepFreq > 100 )
BeepFreq -= 100 ;
if( key == ESC_KEY ) break ;
Beep( BeepFreq, 200 ) ;
//printf( "\tNow beep frequence is %dHz Hi-ratio %d%%\n", BeepFreq, ratio ) ;
printf( "Now beep frequence is %dHz\n", BeepFreq) ;
}
printf( "\n" ) ;
}
/*************************************************************/
void Main(void)
{
BoardInitStart();
SystemClockInit();
TimerInit(TIMER_FREQ);
MemCfgInit();
PortInit();
SerialSwitch(0);
SerialChgBaud(115200);
while( 1 )
{
TestPwm();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -