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

📄 d12driver.c

📁 这个程序是本人对周立功的ARM 2200实验板开发的USB固件程序的第一部分
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
** 文   件   名: D12Driver.c
** 最后修改日期: 2004年7月2日
** 描        述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 应用层
** 版	     本: V1.0
**********************************************************************************************************/

#include "config.h"
#include "D12Config.h"
#include "D12CI.h"
#include "D12HAL.h"
#include "Chap_9.h"
#include "D12Driver.h"

extern EPPFLAGS bEPPflags;
extern INT8U feng;



/*********************************************************************
** 函数名称: INT8U Init_D12(void)
** 功能描述: 设置D12与硬件的连接, 初始化D12,  复位D12
** 输 入:   无
** 输 出:   0: 初始化成功    1: 初始化失败  
**********************************************************************/
INT8U Init_D12(void)
{
		
	
	Init_D12Port();							//初始化PDIUSBD12与LPC2200的连接的硬件配置
	Rst_D12();								//复位PDIUSBD12
	reconnect_USB();        				//重新连接USB
	if (readchipid() != 0x1012){			//读取芯片ID号,如果不为 1012H
		return 1;							//则复位失败
	}
	
	
 	return 0;								//初始化成功
}


//总线复位处理子程序
void bus_reset(void)
{
}

//DMA结束处理
void dma_eot(void)
{
}

//总线挂起改变
void usb_suspend(void)
{
}

/******************************************
** 函数名称: void Usb_Exception(void)
** 功能描述: D12中断服务程序
*******************************************/
void Usb_Exception(void)
{
	INT16U i_st;
	feng++;
	i_st = D12_ReadInterruptRegister();				//读取PDIUSBD12中断寄存器值
	
	if(i_st != 0) {
		if(i_st & D12_INT_BUSRESET)
			bus_reset();							//总线复位处理
		if(i_st & D12_INT_EOT)
			dma_eot();								//DMA传输技术处理
		if(i_st & D12_INT_SUSPENDCHANGE)
			usb_suspend();							//总线挂起改变
		if(i_st & D12_INT_ENDP0IN)
			ep0_txdone();							//控制端点发送数据处理
		if(i_st & D12_INT_ENDP0OUT)
			ep0_rxdone();							//控制端点接收数据处理
		if(i_st & D12_INT_ENDP1IN)
			;		//端点 1发送数据处理
		if(i_st & D12_INT_ENDP1OUT)
			;		//端点 1接收数据处理
		if(i_st & D12_INT_ENDP2IN)
			;		//端点 2发送数据处理
		if(i_st & D12_INT_ENDP2OUT)
			;		//端点 2接收数据处理
	}
	CLR_INTD12();									//清除PDIUSBD12的中断标志
	CLR_INT();										//通知中断结束
   			
}




⌨️ 快捷键说明

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