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

📄 dcmotor.cpp

📁 2410/wince下应用程序例程brick,COMMApp,DAC,DCMotor,mediaplayer,spi,stepmotor,tictac
💻 CPP
字号:
#include "windows.h"
#include "s2410.h"



#define DCMOTOR_IOCTRL_RUN	1
#define DCMOTOR_IOCTRL_STOP	2
#define DCM_TCNTB0			16384

volatile PWMreg *g_pPWMreg=NULL;
volatile IOPreg *g_pIOPregs = NULL;


typedef struct{
	
	unsigned int a;
	
}EXIO_TEST;
EXIO_TEST *exio=NULL;



bool   
DllEntry(HANDLE hinstdll, 
              DWORD dwreason, 
              LPVOID  lpvreserved )
{
	
    return true;
}


//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
bool DCM_Close(DWORD hopencontext)
{
    bool bret = true;
    
    return bret;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
bool DCM_Deinit(DWORD hdevicecontext)
{
    bool bret = true;
    
    return bret;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD DCM_Init(DWORD dwcontext)
{
	g_pIOPregs = (volatile IOPreg *)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);

		if (g_pIOPregs == NULL) 
		{
				
			RETAILMSG(1,(TEXT("For SPI_IOPregs : VirtualAlloc failed!\r\n")));
			return 0;
		}
		else 
		{
			if (!VirtualCopy((PVOID)g_pIOPregs, (PVOID)(IOP_BASE), sizeof(IOPreg), PAGE_READWRITE | PAGE_NOCACHE)) 
			{
				RETAILMSG(1,(TEXT("For SPI_IOPregs: VirtualCopy failed!\r\n")));
				return 0;
			}
		}
	
	g_pPWMreg=(PWMreg *)VirtualAlloc(0,sizeof(PWMreg),MEM_RESERVE, PAGE_NOACCESS);
	if(!g_pPWMreg)
	{
		RETAILMSG(1,(TEXT("SPIDRV.DLL: PWMreg virualalloc failed\r\n")));
		return 0;
		
	}
	if(!VirtualCopy((PVOID)g_pPWMreg,(PVOID)(PWM_BASE),sizeof(PWMreg),PAGE_READWRITE | PAGE_NOCACHE ))
	{
		RETAILMSG(1,(TEXT("SPIDRV.DLL:PWMreg virtualcopy failed! \r\n")));
		return 0;
	}
	g_pPWMreg->rTCFG0 &= ~(0x00ff0000);
	g_pPWMreg->rTCFG0 |= 2;
	g_pPWMreg->rTCFG1 &= ~(0xF);
	g_pPWMreg->rTCNTB0=16384;
	g_pPWMreg->rTCMPB0=16384/2;
	g_pPWMreg->rTCON &= ~(0xf);
	g_pPWMreg->rTCON |= 0x2;
	g_pPWMreg->rTCON &= ~(0xf);
	g_pPWMreg->rTCON |= 0x19;
	
	
	g_pIOPregs->rGPBCON &= ~0xF;
	g_pIOPregs->rGPBCON |= 0xA;

	
    return 1;
    
} 

//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
DWORD DCM_IOControl(
    DWORD Handle,
    DWORD dwIoControlCode,
    PBYTE pInBuf,
    DWORD nInBufSize,
    PBYTE pOutBuf,
    DWORD nOutBufSize,
    PDWORD pBytesReturned
    )
{
	
    switch(dwIoControlCode)
    {
		case DCMOTOR_IOCTRL_RUN:
			RETAILMSG(1,(TEXT("DCMOTOR DLL IOCONTROL\r\n")));
			g_pPWMreg->rTCMPB0 = DCM_TCNTB0/2 + (*((int *)pInBuf))*(DCM_TCNTB0/1024);
		
				
		
				
			  break;
		case DCMOTOR_IOCTRL_STOP :
			g_pPWMreg->rTCMPB0=DCM_TCNTB0/2+0;
				
				break;
				
		default :
		      return 0;
    }
    return 1;
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD DCM_Open(DWORD hdevicecontext, DWORD accesscode, DWORD sharemode)
{
    DWORD dwret = 0;
    

    dwret = 1; // have to make non-zero for this call to succeed.
    return dwret;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void DCM_Powerdown(DWORD hdevicecontext)
{
    
} 

//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
void DCM_Powerup(DWORD hdevicecontext)
{
    
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD DCM_Read(DWORD hopencontext,LPVOID pbuffer, DWORD count)
{
    DWORD dwret = 0;
    
    return dwret;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD DCM_Seek(DWORD hopencontext, long amount, DWORD type)
{
    DWORD dwret = 0;
    
    return dwret;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD DCM_Write(DWORD hopencontext, LPVOID psourcebytes, DWORD numberofbytes)
{
    DWORD dwret = 0;
    

    return dwret;
}

⌨️ 快捷键说明

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