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

📄 main.c

📁 lpc2378与PC通讯(使用USB总线)
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			
** Modified date:		
** Version:
** Descriptions:		
** 说明:				
**
********************************************************************************************************/
#include 	"config.h"


#include "USBConfig.h"										/* 加入USB相关头文件 */
#include "USBCI.h"
#include "USBdma.h"
#include "USBDriver.h"
#include "string.h"


#define USB_INT         22

/*********************************************************************************************************
;** Function name:           SetISR
;**
;** Descriptions:            Set ISR function for VIC
;**
;** input parameters:        no       : VIC Channel
;**                          pri      : VIC PRI
;**                          isr_func : VIC ISR function
;** Returned value:          None
----------------------------------------------------------------------------------
;********************************************************************************************************/
uint8 SetISR(uint32 no, uint32 pri, uint32 isr_func)
{
    if(no > 31) return 0;
    if(pri > 15) return 0;
    
    *(volatile uint32*)((&VICVectAddr0)+no) = isr_func;        //设置中断服务函数

    *(volatile uint32*)((&VICVectPri0)+no)= pri & 0x0F;          //设置中断优先级
    VICIntSelect &= ~(1<<no);
    VICIntEnable = 1<<no;
    
    return 1;
}

#define NUMS	3072										/* 定义DMA传输的长度 */
INT32U len;	


/***************************************************************************************
**  主 函 数 : main()
***************************************************************************************/
int main (void)
{
	INT8U err, *pSrc, *pDst;

	err = USB_Initialize();									/* 初始化LPC214x USB控制器 */
	//if (err != 0)
	//{    请在这里增加出错处理代码
	//}
	
	SetISR(USB_INT,3,(uint32)Usb_Exception);                /* 配置USB中断向量 */
								
	IRQEnable();											/* 使能IRQ中断 */
	
	len = USB_DMASetTransLength(4, NUMS);					/* 配置物理端点4 DMA传输长度 */

	/****************** 主函数是一个无限循环结构 **************/	
	while(1)
	{
		usbserve();											/* USB事件处理如控制传输、总线挂起等等*/

		if (bEPPflags.bits.configuration == 1)
		{													/* USB已配置完成 */
			if (bEPPflags.bits.ep2_rxdma == 1)
			{												/* 物理端点4 DMA接收数据正确完成 */
				DISABLE();
				bEPPflags.bits.ep2_rxdma = 0;
				ENABLE();

				pSrc = USB_DMAGetBuffer(4);
				pDst = USB_DMAGetBuffer(5);
				
				/* 将物理端点4 DMA缓冲区中的所有数据复制到物理端点5 DMA缓冲区中*/
				memcpy(pDst, pSrc, NUMS);

				/* 配置物理端点5 DMA发送缓冲区大小 */
				len = USB_DMASetTransLength(5, NUMS);

				/* 启动物理端点5的DMA传输,将数据发送到PC */
				USB_DMAStart_IN(5);

				/* 配置物理端点4 DMA接收缓冲区大小 */
				len = USB_DMASetTransLength(4, NUMS);
			}
		}
	}
	
    return 0;
}


/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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