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

📄 test_dc_motor.c

📁 arm9 嵌入式系统开发与实践光盘
💻 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	MOTOR_PWM_FREQ	2000
/****************************************************************************
【功能说明】系统主函数
****************************************************************************/
static void Set_PWM3(U32 ratio)
{
	if(!ratio)
	{
		rGPBCON &= ~(3<<6);
		rGPBCON |= 1<<6;	//output 0
		rGPBDAT &= ~(1<<3);
		return;
	}
	rGPBCON &= ~(3<<6);
	rGPBCON |= 2<<6;	//TOUT3

	rTCON = rTCON & (~(0xf<<16)) ;			// clear manual update bit, stop Timer3

//	rTCFG0 	&= 0xffff00ff;					// set Timer 2,3,4 prescaler

	rTCFG1 	&= 0xffff0fff;					// set Timer 2 MUX 1/8
	rTCFG1  |= 0x00002000;					// set Timer 2 MUX 1/8

	rTCNTB3	 = ( GetMasterClock() )/( MOTOR_PWM_FREQ *16 );		//if set inverter off, when TCNT2<=TCMP2, TOUT is high, TCNT2>TCMP2, TOUT is low
	rTCMPB3  = ( rTCNTB3*(100-ratio))/100 ;	//if set inverter on,  when TCNT2<=TCMP2, TOUT is low,  TCNT2>TCMP2, TOUT is high

	rTCON = rTCON & (~(0xf<<16)) | (0x0e<<16) ;
	//自动重装,输出取反关闭,更新TCNTBn、TCMPBn,死区控制器关闭
	rTCON = rTCON & (~(0xf<<16)) | (0x0d<<16) ;		//开启背光控制
}


void Test_DC_Motor(void)
{
	U16 HiRatio = 50;
	
   	printf( "直流电机控制实验,按+/-键控制电机转速\n" ) ;

	Set_PWM3(HiRatio);

    while( 1 )
    {
		U8 key;		
		
		key = getch();
		putch( key );

		if( key == '+' )
			HiRatio += (HiRatio<95)?5:(100-HiRatio);
		if( key == '-' )
			HiRatio -= (HiRatio>=5)?5:HiRatio;
		
		if( key == ESC_KEY ) break ;
		
		Set_PWM3(HiRatio);
		
		printf( "Now HI-Ratio is %d%%\n", HiRatio) ;
	}
	
	printf( "\n" ) ;
	rTCON = rTCON & (~(0xf<<16)) ;			// clear manual update bit, stop Timer3
	
	rGPBCON &= ~(3<<6);
	rGPBCON |= 1<<6;	//output 0
	rGPBDAT &= ~(1<<3);

}

⌨️ 快捷键说明

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