⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_pwm.c

📁 ARM9.rar
💻 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 + -