📄 d12driver.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 + -