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

📄 main.c

📁 一个是混合鼠标键盘功能的HID设备使用d12
💻 C
字号:
#include "./src/config.h"

#define BEEP 0x00000080

#define ZLG7290 0x70
//*************************************************************************************************
//*************************************************************************************************
//延时
void  DelayNS(uint32  dly)
{
   uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<50000; i++);
}
//*************************************************************************************************
uint8 rcv_buf[8] ;//= {0x0a,0x05,0x02,0x09,0x3};
uint8 kk_buf[8] ;//= {0x03,0x02,0x05,0x00,0x0c};

uint8 input_buf[64];
//extern volatile uint8 rcv_new;

extern EVENT_FLAGS   event_flag;
extern CONTROL_XFER  control_data;
//*************************************************************************************************
uint8 count=0;
void scan_key(void)
{
	uint8 i;
    uint8 key_data;
	//uint8 last_key_data;
	//uint8 current_key_data;

	key_data = ZLG7290_GetKey();

    if((key_data!=0)&&(key_data<9))
	{
		rcv_buf[0] = key_data;
		switch(key_data-1)
		{
			case 0:input_buf[1] |= 0x01;
			   break;
			case 1:input_buf[1] |= 0x02;
			   break;
			case 2:input_buf[1] |= 0x04;
			   break;
			case 3:input_buf[2] +=8;
			   break;
			case 4:input_buf[2] -=8;
			   break;
			case 5:input_buf[3] +=8;
			   break;
			case 6:input_buf[3] -=8;
			   break;
			case 7:input_buf[4] +=8;
			   break;
			case 8:input_buf[4] -=8;
			   break;
			default:
			   break;
		}
input_buf[0] = 0x02;
		D12_write_Endpoint(5,5,input_buf);
		for(i=1; i<5; i++)
				input_buf[i] = 0;
		D12_write_Endpoint(5,5,input_buf);
	}
	else
	if(key_data!=0)
	{
	    rcv_buf[0] = key_data;
		switch(key_data-1)
		{
			case 0:
				break;
			case 1:
				break;
			case 2:input_buf[2] =   0x53;//NUM LOCK
				break;
			case 3:input_buf[3] =   0x58;//回车
				break;
			case 4:input_buf[4] =   0x59;//1
				break;
			case 5:input_buf[5] =   0x5a;//2
				break;
			case 6:input_buf[6] =   0x5b;//3
				break;
			case 7:input_buf[7] =   0x5c;//4
				break;
			case 8:input_buf[2] =   0x5d;//5
				break;
			case 9:input_buf[3] =   0x5e;//6
				break;
			case 10:input_buf[4] =  0x5f;//7
				break;
			case 11:input_buf[5]=   0x60;//8
				break;
			case 12:input_buf[6] =  0x61;//9
				break;
			case 13:input_buf[7] =  0x55;//*
				break;
			case 14:input_buf[2] =  0x56;//-
				break;
			case 15:input_buf[3] =  0x53;//NUM LOCK
				break;
			default: 
				break;
		}

input_buf[0] = 0x01;

		D12_write_Endpoint(5,9,input_buf);
		for(i=1; i<9; i++)
				input_buf[i] = 0;
		D12_write_Endpoint(5,9,input_buf);
	}

/*
	if(key_data!=0)
	{
	    rcv_buf[0] = key_data;
		switch(key_data-1)
		{
			case 0:input_buf[0] |= 0x01;                                                  //音量减少
				break;
			case 1:input_buf[0]	|= 0x02;                                                  //音量增加
				break;
			case 2:input_buf[0] |= 0x04;                                                      //静音
				break;
			case 3:input_buf[0] |= 0x08;                                                //播放、暂停
				break;
			case 4:input_buf[0] |= 0x10;                                  //启动windows media player
				break;
			case 5:input_buf[0] |= 0x20;                                                //启动浏览器
				break;
			case 6:input_buf[0] |= 0x40;                                                //运行计算器
				break;
			default: 
				break;
		}
		D12_write_Endpoint(5,1,input_buf);
		input_buf[0] = 0;
		D12_write_Endpoint(5,1,input_buf);		
	}
*/
/*
	if( key_data!=0)
	{
	    rcv_buf[0] = key_data;
		switch(key_data-1)
		{
			case 0:
				break;
			case 1:
				break;
			case 2:input_buf[2] =   0x53;//NUM LOCK
				break;
			case 3:input_buf[3] =   0x58;//回车
				break;
			case 4:input_buf[4] =   0x59;//1
				break;
			case 5:input_buf[5] =   0x5a;//2
				break;
			case 6:input_buf[6] =   0x5b;//3
				break;
			case 7:input_buf[7] =   0x5c;//4
				break;
			case 8:input_buf[2] =   0x5d;//5
				break;
			case 9:input_buf[3] =   0x5e;//6
				break;
			case 10:input_buf[4] =  0x5f;//7
				break;
			case 11:input_buf[5]=   0x60;//8
				break;
			case 12:input_buf[6] =  0x61;//9
				break;
			case 13:input_buf[7] =  0x55;//
				break;
			case 14:input_buf[2] =  0x56;//-
				break;
			case 15:input_buf[3] =  0x53;//NUM LOCK
				break;
			default: 
				break;
		}
		D12_write_Endpoint(5,8,input_buf);
		for(i=0; i<8; i++)
				input_buf[i] = 0;
		D12_write_Endpoint(5,8,input_buf);
	}
*/
}
//*************************************************************************************************
//主函数
//*************************************************************************************************
int main(void)
{
	PINSEL0 = 0x00000005;                                                     //设置IO连接到UART0上
	IO0DIR |= BEEP;
    IO0SET = BEEP;
    
	UART0_init(115200);                                                                //串口初始化
	D12_init();                                                                         //D12初始化
	I2C_init(100000);                                                                   //IIC初始化
	ZLG7290_SendData(0x02,0);
	while(1)
	{
		ZLG7290_DispBuf(rcv_buf,8);

		if(event_flag.bits.bus_reset)
		{
		    DISABLE();
			event_flag.bits.bus_reset = 0;
			ENABLE();
			///IO0SET = SUSP;                                                                //挂起
			
		}
		if(event_flag.bits.bus_suspend)
		{
		    DISABLE();
			event_flag.bits.bus_suspend = 0;
			ENABLE();
			if(IO0PIN&SUSP == SUSP)
			{
				//IO0CLR = SUSP;                                                          //重新唤起
				//IO0SET = SUSP;
				///////低功耗/////
			}
		}
		if(event_flag.bits.setup_packet)
		{
		    DISABLE();
			event_flag.bits.setup_packet = 0;
			ENABLE();

			DISABLE();
			control_handler();
			ENABLE();
		}
		if(event_flag.bits.configuration)
		{
			scan_key();			
		}
	}
}
//*************************************************************************************************
//结束
//*************************************************************************************************

⌨️ 快捷键说明

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