Files
Hero-C-Board-Legacy/云台/云台-old/CarBody/Keyboard.c

53 lines
2.2 KiB
C

#include "stm32f4xx.h" // Device header
#include "stm32f4xx_conf.h"
#include "UART.h"
#include "Remote.h"
/*
*函数简介:键盘初始化
*参数说明:无
*返回类型:无
*备注:初始化UART1(USART6)
*/
void Keyboard_Init(void)
{
UART1_Init();
}
/*
*函数简介:键盘数据处理
*参数说明:接收数据
*返回类型:无
*备注:无
*/
void Keyboard_DataProcess(uint8_t *Data)
{
Remote_RxData.Remote_Mouse_KeyLastR=Remote_RxData.Remote_Mouse_KeyR;//获取上一次五个键的状态
Remote_RxData.Remote_KeyLast_Q=Remote_RxData.Remote_Key_Q;
Remote_RxData.Remote_KeyLast_E=Remote_RxData.Remote_Key_E;
Remote_RxData.Remote_KeyLast_Shift=Remote_RxData.Remote_Key_Shift;
Remote_RxData.Remote_KeyLast_Ctrl=Remote_RxData.Remote_Key_Ctrl;
Remote_RxData.Remote_Mouse_RL=(int16_t)((uint16_t)Data[1]<<8 | Data[0]);
Remote_RxData.Remote_Mouse_DU=(int16_t)((uint16_t)Data[3]<<8 | Data[2]);
Remote_RxData.Remote_Mouse_Wheel=(int16_t)((uint16_t)Data[5]<<8 | Data[4]);
Remote_RxData.Remote_Mouse_KeyL=Data[6];
Remote_RxData.Remote_Mouse_KeyR=Data[7];
Remote_RxData.Remote_Key_W=Data[8] & 0x01;
Remote_RxData.Remote_Key_S=(Data[8]>>1) & 0x01;
Remote_RxData.Remote_Key_A=(Data[8]>>2) & 0x01;
Remote_RxData.Remote_Key_D=(Data[8]>>3) & 0x01;
Remote_RxData.Remote_Key_Shift=(Data[8]>>4) & 0x01;
Remote_RxData.Remote_Key_Ctrl=(Data[8]>>5) & 0x01;
Remote_RxData.Remote_Key_Q=(Data[8]>>6) & 0x01;
Remote_RxData.Remote_Key_E=(Data[8]>>7) & 0x01;
if(Remote_RxData.Remote_KeyLast_Q==0 && Remote_RxData.Remote_Key_Q==1)Remote_RxData.Remote_KeyPush_Q=!Remote_RxData.Remote_KeyPush_Q;//检测是否按下
if(Remote_RxData.Remote_KeyLast_E==0 && Remote_RxData.Remote_Key_E==1)Remote_RxData.Remote_KeyPush_E=!Remote_RxData.Remote_KeyPush_E;
if(Remote_RxData.Remote_KeyLast_Shift==0 && Remote_RxData.Remote_Key_Shift==1)Remote_RxData.Remote_KeyPush_Shift=!Remote_RxData.Remote_KeyPush_Shift;
if(Remote_RxData.Remote_KeyLast_Ctrl==0 && Remote_RxData.Remote_Key_Ctrl==1)Remote_RxData.Remote_KeyPush_Ctrl=!Remote_RxData.Remote_KeyPush_Ctrl;
if(Remote_RxData.Remote_Mouse_KeyLastR==0 && Remote_RxData.Remote_Mouse_KeyR==1)Remote_RxData.Remote_Mouse_KeyPushR=1;
else Remote_RxData.Remote_Mouse_KeyPushR=0;
}