/** * @file remote_control.h * @author DJI 2016 * @author modified by neozng * @brief 遥控器模块定义头文件 * @version beta * @date 2022-11-01 * * @copyright Copyright (c) 2016 DJI corp * @copyright Copyright (c) 2022 HNU YueLu EC all rights reserved * */ #ifndef REMOTE_CONTROL_H #define REMOTE_CONTROL_H #include #include "main.h" #include "usart.h" #define RC_CH_VALUE_MIN ((uint16_t)364) #define RC_CH_VALUE_OFFSET ((uint16_t)1024) #define RC_CH_VALUE_MAX ((uint16_t)1684) /* ----------------------- RC Switch Definition----------------------------- */ #define RC_SW_UP ((uint16_t)1) #define RC_SW_MID ((uint16_t)3) #define RC_SW_DOWN ((uint16_t)2) #define switch_is_down(s) (s == RC_SW_DOWN) #define switch_is_mid(s) (s == RC_SW_MID) #define switch_is_up(s) (s == RC_SW_UP) /* ----------------------- PC Key Definition-------------------------------- */ #define KEY_PRESSED_OFFSET_W ((uint16_t)1 << 0) #define KEY_PRESSED_OFFSET_S ((uint16_t)1 << 1) #define KEY_PRESSED_OFFSET_A ((uint16_t)1 << 2) #define KEY_PRESSED_OFFSET_D ((uint16_t)1 << 3) #define KEY_PRESSED_OFFSET_SHIFT ((uint16_t)1 << 4) #define KEY_PRESSED_OFFSET_CTRL ((uint16_t)1 << 5) #define KEY_PRESSED_OFFSET_E ((uint16_t)1 << 7) #define KEY_PRESSED_OFFSET_Q ((uint16_t)1 << 6) #define KEY_PRESSED_OFFSET_R ((uint16_t)1 << 8) #define KEY_PRESSED_OFFSET_F ((uint16_t)1 << 9) #define KEY_PRESSED_OFFSET_G ((uint16_t)1 << 10) #define KEY_PRESSED_OFFSET_Z ((uint16_t)1 << 11) #define KEY_PRESSED_OFFSET_X ((uint16_t)1 << 12) #define KEY_PRESSED_OFFSET_C ((uint16_t)1 << 13) #define KEY_PRESSED_OFFSET_V ((uint16_t)1 << 14) #define KEY_PRESSED_OFFSET_B ((uint16_t)1 << 15) /* ----------------------- Data Struct ------------------------------------- */ typedef struct { struct { int16_t ch[5]; char s[2]; } rc; struct { int16_t x; int16_t y; int16_t z; uint8_t press_l; uint8_t press_r; } mouse; struct { uint16_t v; } key; } RC_ctrl_t; /* ------------------------- Internal Data ----------------------------------- */ /** * @brief 初始化遥控器,该函数会将遥控器注册到串口 * * @attention 注意分配正确的串口硬件,遥控器在C板上使用USART3 * */ RC_ctrl_t *RC_init(UART_HandleTypeDef *rc_usart_handle); #endif