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

📄 testpwm.c

📁 ARM9.2的第3个程序!!!!!!!!!!!
💻 C
字号:
#include "2440addr.h"
#include "2440lib.h"
#include "def.h"

void xmain(void)
{
	U16 freq = 2000 ;
	
	ChangeClockDivider(3,1);//1:3:6
	ChangeMPllValue(127,2,1);		//405MHZ
	Port_Init();
	Isr_Init();
	Uart_Init(0, 115200);
	Uart_Select(0);	
	
	//---------------------set PWM---------------------//
	//设置功能管脚
	rGPBCON = ( rGPBCON | (3<<2) ) & ( ~(1<<2) );//GPB1 -> timer1		
	//设置预分频器
	rTCFG0 |= 0x0f;//prescaler value for Timer1//why?
	//rTCFG0 = rTCFG0 &~(0xff)|(15);
	//设置分割器
	rTCFG1 = ( rTCFG1 | (0x0f<<4) ) & ( ~(0x0d<<4) );//MUX1 be 0010 = 1/8			
	//周期、占空比
	rTCNTB1 = (PCLK>>7)/freq;//
	rTCMPB1 = rTCNTB1>>1;//50%
	//设置时钟控制寄存器
	rTCON = rTCON | (1<<11) 		//auto reload
	     		  | (0<<10)			//inverter off
	     	      | (1<<9)			//update TCNTB1&TCMPB1
	     	      | (1<<8);			//start for Timer1
	rTCON &=  ~(1<<9);//stop update  
	
	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" );	  		 	
	  	
	while(1)
	{
		U8 key = Uart_Getch();
		switch(key)
		{
			case '=':	//'+'
						if(freq<20000)
							freq += 100;
						
						//周期、占空比
						rTCNTB1 = (PCLK>>7)/freq;	//
						rTCMPB1 = rTCNTB1>>1;		//50%
						//设置时钟控制寄存器
						rTCON |= (1<<8);			//start for Timer1
						rTCON &=  ~(1<<9);			//stop update
						
						Uart_Printf( "\tFreq = %d\n", freq ) ;
						break;
						
			case '-':	
						if(freq>100)
							freq -= 100;
						
						//周期、占空比
						rTCNTB1 = (PCLK>>7)/freq;	//
						rTCMPB1 = rTCNTB1>>1;		//50%
						//设置时钟控制寄存器
						rTCON |= (1<<8);			//start for Timer1
						rTCON &=  ~(1<<9);			//stop update
						
						Uart_Printf( "\tFreq = %d\n", freq ) ;
						break;	
						
			case ESC_KEY:							
						rGPBCON = ( rGPBCON | (3<<2) ) & ( ~(2<<2) );//set GPB1 as output				
						rGPBDAT &= ~2;				//GPB1 = 0
						rTCON &= (1<<8);			//stop for Timer1	
						
						Uart_Printf( "\tstop Been\n" ) ;     		 	     	     
						break;	
			default:	
						break;										
		}
	}
}

⌨️ 快捷键说明

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