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

📄 ch375cfg.c.bak

📁 CH375移植到S3C44B0
💻 BAK
字号:
#include "\CH375\CH375CFG.H"
#include "44b.h"
#include "def.h"

#define	CMD_GET_STATUS		0x22
#define	USB_INT_DISCONNECT	0x16
#define	USB_INT_CONNECT		0x15			/* 检测到USB设备连接事件 */
#define DISK_DISCONNECT			0x01	/* 磁盘没有连接或者已经断开 */
#define DISK_CONNECT			0x02	/* 磁盘已经连接,但是尚未初始化或者无法识别该磁盘 */
#define ERR_SUCCESS				0x00	/* 操作成功 */

extern U8 volatile 	CH375IntStatus;			/* CH375操作的中断状态 */
extern U8 volatile 	CH375IntStatus;	
extern U8 volatile 	CH375DiskStatus;
//CH375外部配置文件
void mDelay1_2uS( )  /* 至少延时1.2uS,根据单片机主频调整 */
{
	U32	i;
	for ( i = 30; i != 0; i -- );
}


void __irq	CH375Interrupt( void )	/* CH375中断服务程序,由CH375的INT#的低电平或者下降沿触发单片机中断 */
{
    
    rEXTINTPND=0xf;		//clear EXTINTPND reg.		
    rI_ISPC=BIT_EINT2;	//clear pending_bit
   
	xWriteCH375Cmd( CMD_GET_STATUS );  /* 获取中断状态并取消中断请求 */
	CH375IntStatus = xReadCH375Data( );  /* 获取中断状态 */
	if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT;  /* 检测到USB设备断开事件 */
	else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT;  /* 检测到USB设备连接事件 */

}

void CH375_PORT_INIT( )  /*初始化 */
{
	
   	rINTCON=0x5;
	rINTMOD=0x0;    //All=IRQ mode
	rPDATG=0xff;
    rPCONG=0xffff;		
    rPUPG=0x0;		//should be enabled  
	rEXTINT=0x0;
	
    pISR_EINT2 = (unsigned)CH375Interrupt;
    rINTMSK &=(~(BIT_GLOBAL|BIT_EINT2));	//start INT

		
}

void xWriteCH375Cmd( U8 mCmd )		/* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */
{
	mDelay1_2uS( ); mDelay1_2uS( );  /* 至少延时1uS */
	CH375Cmd = mCmd;
	mDelay1_2uS( ); mDelay1_2uS( );  /* 至少延时2uS */
}

void xWriteCH375Data( U8 mData )		/* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */
{
	
	CH375Dat = mData ;  
	
	mDelay1_2uS( );  /* 至少延时1.2uS */
}

U8 xReadCH375Data( void )			/* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */
{
	U8	mData;
	mDelay1_2uS( );  /* 至少延时1.2uS */
	
	mData = (U8)CH375Dat; 
	
	return( mData );
}
/* 延时指定毫秒时间,根据单片机主频调整,不精确 */
void	mDelaymS( U32 ms )
{
	U32	i;
	while ( ms -- ) for ( i = 25000; i != 0; i -- );
}

extern void OSTimeDly(U32);
/* 检查操作状态,如果错误则显示错误代码并停机 */
void	mStopIfError( U8 iError )
{
	if ( iError == ERR_SUCCESS ) return;  /* 操作成功 */
	LCD_Printf( "Error: %02X\n", (U16)iError );  /* 显示错误 */
	OSTimeDly(900);
}
//*****************************************************************************************

⌨️ 快捷键说明

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