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

📄 test_dcmotor.c

📁 arm9.rar
💻 C
字号:
/****************************************************************************
【文  件  名  称】Test_DcMotor.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"

/****************************************************************************
【功能说明】
****************************************************************************/
void Set_Tout3_Pwm( U8 HiRatio )
{
	#define FREQ_PWM3		10
	
	if( HiRatio > 100 )
		HiRatio = 100 ;	
	
	rGPBCON = rGPBCON & (~(3<<6)) | (2<<6) ;		//GPB3设置为TOUT3
	rTCON = rTCON & (~(0xf<<16)) ;			// clear manual update bit, stop Timer3

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

	rTCFG1 	&= 0xffff0fff;					// set Timer 3 MUX 1/16
	rTCFG1  |= 0x00003000;					// set Timer 3 MUX 1/16

	rTCNTB3	 = ( GetCpuClock() )/( FREQ_PWM3 *16 );		//if set inverter off, when TCNT2<=TCMP2, TOUT is high, TCNT2>TCMP2, TOUT is low
	rTCMPB3  = ( rTCNTB3*(100-HiRatio))/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_DcMotor(void)
{
	U16 ratio = 50;

   	printf( "S3C44B0X DC Motor TEST, press ESC key to exit !\n" ) ;
   	printf( "Press '+' or '-' to increase or decrease the speed\n" ) ;
  
  	Set_Tout3_Pwm( ratio ) ;  
    
    while( 1 )
    {
		U8 key;		
		
		key = getch();
		putch( key );
		
		if( key == '+' )
			if( ratio < 100 )
				ratio += 1 ;
		if( key == '-' )
			if( ratio > 1 )
				ratio -= 1 ;
		
		if( key == ESC_KEY ) break ;
		
		printf( "\tNow Hi-ratio %d%%\n", ratio ) ;
		Set_Tout3_Pwm( ratio ) ;
    }    

	rGPBCON = rGPBCON & (~(3<<6)) | (1<<6) ;		//GPB3设置为输出
	rGPBDAT = rGPBDAT & (~(1<<3)) ;		//让GPB3输出0,停止电动机转动
}

static char title[] = "直流电机实验";
static char tip[]   = "实验直流电机,按ESC键返回";

//Test_DcMotorItem在prog_entry.c里被引用
TEST_PROGRAM_ITEM Test_DcMotorItem = {
				(TEST_PROGRAM)Test_DcMotor, 	//入口地址
				title, 					//显示名称
				tip, 					//帮助或提示信息,可为NULL
				1};						//使用printf,puts,putch等函数时在LCD上也显示输出字符(串)

⌨️ 快捷键说明

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