/** ****************************(C) COPYRIGHT 2016 DJI**************************** * @file remote_control.c/h * @brief ң¿؆÷´¦À񋂣¿؆÷ʇͨ¹ýÀˆSBUSµĐ­ҩ´«ʤ£¬ÀûӃDMA´«ʤ·½ʽ½ڔ¼CPU * ׊Դ£¬ÀûӃ´®¿ڿՏЖжπ´À­ư´¦À򻺽£¬ͬʱ̡¹©һЩµ􏟖؆􄍁£¬´®¿ڍ * µķ½ʽ±£֤Ȉ²導µĎȶ¨Д¡£ * @note * @history * Version Date Author Modification * V1.0.0 Dec-26-2018 RM 1. ͪ³ɍ * @verbatim ============================================================================== ============================================================================== @endverbatim ****************************(C) COPYRIGHT 2016 DJI**************************** */ #ifndef REMOTE_CONTROL_H #define REMOTE_CONTROL_H #include "struct_typedef.h" #include "bsp_rc.h" #include #define SBUS_RX_BUF_NUM 25u #define RC_FRAME_LENGTH 18u #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_Q ((uint16_t)1 << 6) #define KEY_PRESSED_OFFSET_E ((uint16_t)1 << 7) #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 ------------------------------------- */ #define OFF 1694 #define ON 306 #define MID 1000 #define MAX 306 #define MID 1000 #define MIN 1694 #define ADD 1694 #define MINUS 1694 typedef struct { int16_t ch[4]; int16_t sw[8]; } RC_ctrl_t; typedef struct { bool online; int8_t mode; bool ai; float ch_l_x; /* ��ҡ�� X */ float ch_l_y; /* ��ҡ�� Y�����ţ� */ float ch_r_x; /* ��ҡ�� X */ float ch_r_y; /* ��ҡ�� Y */ struct{ float x; float y; }chassis_ctrl_vec; struct{ float w; }gimbal_yaw_ctrl_vec; struct{ float w; }gimbal_pit_ctrl_vec; struct{ bool ready; bool firecmd; }shoot; } COMP_AT9S_CMD_t; /* ----------------------- Internal Data ----------------------------------- */ /** * @brief remote control init * @param[in] none * @retval none */ extern void remote_control_init(void); /** * @brief get remote control data point * @param[in] none * @retval remote control data point */ void USART3_IRQHandler1(void); void DMA1_Stream1_IRQHandler1(void); extern const RC_ctrl_t *get_remote_control_point(void); #endif