📄 test_dcmotor.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 + -