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

📄 gfd_usb_rw.c

📁 GD00驱动开发手册-USB驱动 arm usb 驱动
💻 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 "debug.h"

//***************************************************************************************************************
//函数原型声明
//***************************************************************************************************************
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); 
 
 
 
//****************************************************************************************************************
//函数定义
//****************************************************************************************************************

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;
	  t = temp; }
	while((!(temp &= read_success)) && ((++i)< 100));
	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;
}


U8 usb_chang_reg32_to_reg8(U32 reg)
{
	U8 reg8;
	reg8 = (U8)(usb_read_reg(reg));
	return reg8;
}


U16 usb_change_reg32_to_reg16(U32 reg)
{
	U16 reg16;
	reg16 = (U16)(usb_read_reg(reg));
	return reg16;
}


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);			
	tmp |= val;					
	usb_write_reg(reg,tmp);			
	*(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);			
	tmp &= val;					
	usb_write_reg(reg,tmp);			
	*(RP)USB_APPLOCK = 0X00;
	
	return 0;
}

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

⌨️ 快捷键说明

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