📄 main.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** Latest modified Date: 2008-05-10
** Latest Version: 1.0
** Descriptions: SmartARM2300 系列开发板 USB Device DMA 示例程序
**
**--------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by: LingGuilin
** Modified date: 2008-05-10
** Version: 1.1
** Descriptions: SmartARM2300 系列开发板 USB Device DMA 示例程序
** 1.通过物理端点4接收PC发送的3072字节数据
** 2.通过物理端点5将接收到的3072字节数据发送回PC
**
*********************************************************************************************************/
#include "main.h"
#define USB_INT 22
#define NUMS 3072 /* 定义DMA传输的长度 */
/*********************************************************************************************************
** Function name: main
** Descriptions: 主函数
** Input parameters: None
** output parameters: None
** Created Date:
*********************************************************************************************************/
int main (void)
{
uint8 *pSrc = NULL;
uint8 *pDst = NULL;
uint8 ucErr = 0;
uint32 ulSetLen = 0;
TargetInit();
ucErr = usbDevInit(); /* 初始化USB设备控制器 */
if (ucErr != 0) {
while(1); /* 初始化失败,程序停止执行 */
}
vicIrqFuncSet(USB_INT,3,(uint32)usbDevException); /* 设置USB Device中断服务程序 */
IRQ_ENABLE(); /* 允许CPU的IRQ中断 */
ulSetLen = usbDevDMASetTransLength(4, NUMS); /* 配置物理端点4 DMA传输长度 */
while(1) {
usbDevServe(); /* 处理USB事件 */
if (bEPPflags.bits.configuration == 1) {
if (bEPPflags.bits.ep2_rxdma == 1) {
/* 物理端点4 DMA接收数据完成 */
IRQ_DISABLE();
bEPPflags.bits.ep2_rxdma = 0;
IRQ_ENABLE();
pSrc = usbDevDMAGetBuffer(4);
pDst = usbDevDMAGetBuffer(5);
memcpy(pDst, pSrc, NUMS); /* 拷贝数据到目标缓冲区 */
ulSetLen = usbDevDMASetTransLength(5,NUMS); /* 设置物理端点5缓冲区大小 */
usbDevDMAStartIN(5); /* 启动物理端点5 DMA传输 */
ulSetLen = usbDevDMASetTransLength(4, NUMS); /* 设置物理端点4缓冲区大小 */
}
}
}
return 0;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -