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

📄 main.c

📁 ARM9的S3C2410的实验源码
💻 C
字号:
/****************************************************************************
【文  件  名  称】Main.c
【功  能  描  述】FS2410XP教学平台实验程序
【程  序  版  本】3.0
【创建及创建日期】优龙公司/2005-XX-XX
【修改及修改日期】2005-5-23
****************************************************************************/
//头文件定义
#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"

#define	MaxBeepFreq	20000
#define	MinBeepFreq	20

/***************************************************************************
Function name: Beep
Parameter    : freq:频率参数 ms:延迟
Description  : 占空比一定,改变频率来控制蜂鸣器的声音
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
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;
	
}

/***************************************************************************
Function name: TestPwm
Parameter    : void
Description  : 通过PWM来控制蜂鸣器
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
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" ) ;
}

/***************************************************************************
Function name: Main
Parameter    : void
Description  : 初始化系统,串口,并调用PWM实验函数
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
void Main(void)
{
	BoardInitStart();		//系统初始化,MMU初始化
	SystemClockInit();		//系统时钟初始化
	MemCfgInit();			//设置NAND FLASH的配置寄存器
	PortInit();				//S3C2410X的GPIO初始化

	SerialSwitch(0);		//选择串口0
	SerialChgBaud(115200);	//波特率115200

    
	while( 1 )
	{
		printf("FS2410XP PWM Test,please Enter 'ESC' to exit\n");
		TestPwm();		  //PWM控制
	}
}
/****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -