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

📄 gfd_usb_rw.c

📁 基于EPSON 的一种操作系统内核改造的实时嵌入式操作系统ASIXOS,国内一家研发中心开发。精炼可靠
💻 C
字号:
/*************************************************************************************************************
Module Name:
  
            HA_GFDUSBRW.C
            
Description:

           This is a file for  usb READWRITE.
           
Revision History:

     Version         Date            Author            Comment
     
      0.0          2003.7.23           lmq             Initial Creation
      0.1          2003.7.25           zl			   changed	
      
***************************************************************************************************************/
 
//****************************************************************************************************************
//I N C L U D E S
//****************************************************************************************************************

#include "gfd_usb_irq.h"
#include "HA_TypeDef.h"
#include "hardware_reg.h"
#include "itron.h"

//***************************************************************************************************************
//L O C A L     F U N C T I O N      P R O T O T Y P E S
//***************************************************************************************************************
ER usb_write_reg(U32 reg, U32 val);
ER usb_read_reg(U32 reg); 
U8 usb_chang_reg32_to_reg8(U32 reg);
U16 usb_change_reg32_to_reg16(U32 reg);
U8 usb_get_regbit15_to_8(U32 reg);
ER usb_RMW_reg(U32 reg, U32 val); 
ER usb_lock_readreg(U32 reg); 
 
 
 
//****************************************************************************************************************
//G L O B A L S     P R I V A T E      T O      T H I S         F I L E
//****************************************************************************************************************

ER usb_write_reg(U32 reg, U32 val)
{
	U32 temp;
	U8  i = 0;
	*(RP)reg = val;
	temp = *(RP)reg;
	while((!((temp &= write_success) == write_success))&&((++i) < 100))
	{ temp = *(RP)reg; }
	return(0);	
}

ER  usb_read_reg(U32 reg)
{
	U32 temp,t;
	U8 i = 0;
	*(RP)USB_READFLAG = 0x1;
	temp = *(RP)reg;
	do
	{ temp = *(RP)reg;//lmq
	  t = temp; }
	while((!(temp &= read_success)) && ((++i)< 100));//lmq
	t &= 0x0fffffff;
	return t;
}

U32 usb_write_read_reg(U32 reg, U32 val)
{
	U32 data;
	usb_write_reg(reg, val);
	data = usb_read_reg(reg);
	
	return data;
}

/* Chage  32bits register to 8bits register, that is take the last 8bits of 32bits register */
U8 usb_chang_reg32_to_reg8(U32 reg)
{
	U8 reg8;
	reg8 = (U8)(usb_read_reg(reg));
	return reg8 ;
}

/* Change 32bits register to 16bits register, that is take the last  16bits of 32bits register */
U16 usb_change_reg32_to_reg16(U32 reg)
{
	U16 reg16;
	reg16 = (U16)(usb_read_reg(reg));
	return reg16;
}

/* Get the the register bits range 15 to 8 from 32bits register */
U8 usb_get_regbit15_to_8(U32 reg)
{
	U8 reg8;
	reg8 = (U8)(usb_read_reg(reg)>>8);
	return reg8;
}

ER usb_RMW_reg(U32 reg, U32 val)
{
	U32 tmp;
	
	*(RP)USB_APPLOCK = 0X01; 
	tmp = usb_read_reg(reg);			//changed
	tmp |= val;					//changed
	usb_write_reg(reg,tmp);			//changed
	*(RP)USB_APPLOCK = 0X00;
	
	return 0;
}

ER usb_RMW_clrreg(U32 reg, U32 val)
{
	U32 tmp;
	
	*(RP)USB_APPLOCK = 0X01; 
	tmp = usb_read_reg(reg);			//changed
	tmp &= val;					//changed
	usb_write_reg(reg,tmp);			//changed
	*(RP)USB_APPLOCK = 0X00;
	
	return 0;
}

ER usb_lock_readreg(U32 reg)
{
	U32 tmp;
	
	*(RP)USB_APPLOCK = 0X01; 
	tmp = usb_read_reg(reg);			//changed
	*(RP)USB_APPLOCK = 0X00;
	
	return tmp;
}

⌨️ 快捷键说明

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