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

📄 main.c

📁 开发环境ADS 通过编写一段程序使PC机与实验箱的从USB相连接。连接的时候
💻 C
字号:
#include <stdio.h>
#include <stdarg.h>
#include "..\inc\option.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\def.h"

#include "..\inc\armusb.h"


volatile char which_int=0;
ARMUSBFLAGS  bUSBFlags;
CONTROL_XFER ControlData;
unsigned char Ep1Buf[EP1_PACKET_SIZE];
unsigned char Ep2Buf[EP2_PACKET_SIZE];
unsigned char Ep1Len, Ep2Len;



unsigned int SERIAL_BAUD = 115200;		//串口波特率设定




unsigned char MCLK_M;
unsigned char MCLK_P;
unsigned char MCLK_S;


void __irq Eint0Isr(void)
{

	rI_ISPC = BIT_EINT0;
	bUSBFlags.bits.bIn_ISR = 1; 
	USB_DISABLE_INTERRUPT;
		
	fn_usb_isr();	

	USB_ENABLE_INTERRUPT;
	bUSBFlags.bits.bIn_ISR = 0; 
}


/****************************************************************************
【功能说明】中断初始化
****************************************************************************/
void Isr_Init(void)
{
    rINTCON = 0x1;		//中断控制寄存器设置

    rINTMOD=0x0;	  // All=IRQ mode

//    pISR_EINT4567 = (int)Eint4567Isr;

    rPCONG = rPCONG | 0xff00;		//GPG4、5、6、7设为中断引脚
    rPUPG = rPUPG & 0x0f;		//GPG4、5、6、7上拉电阻有效
	rEXTINT=0x0;	//低电平触发
 
    rINTMSK=~(BIT_GLOBAL);		//中断有效
}
//***************************************************************************

void Isr_USB_Init(void)
{
	pISR_EINT0 = (int)Eint0Isr;
	
	rPCONG = rPCONG | 0x0003;
	rPUPG = rPUPG & 0xfe;
}


//***************************************************************************


void Main(void)
{	
	unsigned char i;
	
	 rSYSCFG=SYSCFG_8KB;		//使用8K字节的指令缓存
	rNCACHBE0=((unsigned int)(Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12); 
    	//在上面的数据区域不使用高速缓存

	MCLK_M = 52; MCLK_P = 6; MCLK_S = 0;
	Delay(0);
	Port_Init();		//IO端口功能、方向设定
	Led_Disp();		//LED来回闪烁显示 
	
	rPCONG &= 0x00ff;

	ChangePllValue(MCLK_M,MCLK_P,MCLK_S);		//修改系统主频为8倍频
	Uart_Init(0,SERIAL_BAUD);		//异步串行口初始化,设置波特率为115200
	Delay(0);		//利用系统时钟校准延时函数
	Uart_Select(0);
	Uart_Printf("\n\n*********************************\n"
	                "    欢迎使用百科融创ARM7实验箱   \n"
	                "       实验:从USB测试      \n"
	                "        Version:1.02             \n"
	                "    E-mail:tianjunzhuo@sohu.com  \n"
	                "*********************************\n\n"
	                
	            );
	

	Isr_Init();		//中断初始化
	Isr_USB_Init();
	
	UsbReconnect();

	Delay(0);
	
	Uart_Printf("USB test\n");

	while(1)
	{
		USB_D12_SUSPEND;
		if (bUSBFlags.bits.bBus_Reset)
		{	
			bUSBFlags.bits.bIn_ISR = 1;
			USB_DISABLE_INTERRUPT;
			bUSBFlags.bits.bBus_Reset = 0;
			USB_D12_SUSPEND;
			DEBUGF(USB_SETUP_DEBUG,("    reset\n\n"));
			USB_ENABLE_INTERRUPT;
			bUSBFlags.bits.bIn_ISR = 0;
		}
		if (bUSBFlags.bits.bSuspend)
		{
			bUSBFlags.bits.bIn_ISR = 1;			
			USB_DISABLE_INTERRUPT;
			bUSBFlags.bits.bSuspend= 0;
			DEBUGF(USB_SETUP_DEBUG,("suspend\n\n"));
			USB_ENABLE_INTERRUPT;
			bUSBFlags.bits.bIn_ISR = 0;	
		}
		if (bUSBFlags.bits.bSetup_Packet)
		{
			bUSBFlags.bits.bIn_ISR = 1;
			USB_DISABLE_INTERRUPT;
			bUSBFlags.bits.bSetup_Packet = 0;
			UsbControlHandler();
			USB_D12_SUSPEND;
			DEBUGF(USB_SETUP_DEBUG,("setup\n\n"));
			USB_ENABLE_INTERRUPT;
			bUSBFlags.bits.bIn_ISR = 0;
		}
		
		if(bUSBFlags.bits.bEP1_RxDone)
		{
			bUSBFlags.bits.bIn_ISR = 1;
			USB_DISABLE_INTERRUPT;
			bUSBFlags.bits.bEP1_RxDone = 0;
			UsbWriteEndpoint(3,Ep1Buf,Ep1Len);			
			if(1)
			{
				for(i=0;i<Ep1Len;i++)
					Uart_Printf("%2.2x ", Ep1Buf[i]);
				Uart_Printf("\n");
				Led_Disp();	
			}
			USB_ENABLE_INTERRUPT;	
			bUSBFlags.bits.bIn_ISR = 0;
		}
		
		if(bUSBFlags.bits.bEP2_RxDone)
		{
			USB_DISABLE_INTERRUPT;
			bUSBFlags.bits.bEP2_RxDone = 0;
			if(1)
			{
				for(i=0;i<Ep2Len;i++)
					Uart_Printf("%2.2x ", Ep2Buf[i]);
				Uart_Printf("\n");
				Led_Disp();	
			}
			USB_ENABLE_INTERRUPT;
			UsbWriteEndpoint(5,Ep2Buf,Ep2Len);						
		}
	}
}




⌨️ 快捷键说明

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