添加rc——can
This commit is contained in:
parent
2b35ce3955
commit
4da08b6e4b
@ -1,33 +1,7 @@
|
||||
/*
|
||||
RC CAN数据发送模块
|
||||
将DR16遥控器数据通过CAN总线发送
|
||||
参考motor_rm的结构设计
|
||||
|
||||
Example:
|
||||
|
||||
RC_CAN_t rc_can;
|
||||
RC_CAN_Param_t param = {
|
||||
.can = BSP_CAN_1,
|
||||
.enabled = true,
|
||||
.send_period = 10 // 10ms发送一次
|
||||
};
|
||||
|
||||
RC_CAN_Init(&rc_can, ¶m);
|
||||
|
||||
// 在主循环中
|
||||
while(1) {
|
||||
if (DR16_ParseData(&dr16) == DEVICE_OK) {
|
||||
RC_CAN_SendData(&rc_can, &dr16);
|
||||
}
|
||||
osDelay(param.send_period);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include "rc_can.h"
|
||||
#include "device/dr16.h"
|
||||
#include "bsp/time.h"
|
||||
#include <string.h>
|
||||
|
||||
/* USER INCLUDE BEGIN */
|
||||
|
||||
|
||||
@ -19,16 +19,14 @@ extern "C" {
|
||||
/* USER DEFINE END */
|
||||
|
||||
/* Exported constants ------------------------------------------------------- */
|
||||
// CAN ID 定义
|
||||
#define RC_CAN_DR16_JOYSTICK_ID 0x300 // 遥杆数据
|
||||
#define RC_CAN_DR16_SWITCH_ID 0x301 // 拨杆数据
|
||||
#define RC_CAN_DR16_MOUSE_ID 0x302 // 鼠标数据
|
||||
#define RC_CAN_DR16_KEYBOARD_ID 0x303 // 键盘数据
|
||||
#define RC_CAN_DR16_STATUS_ID 0x304 // 状态数据
|
||||
#define RC_CAN_DR16_JOY_ID 0x350 // 遥杆数据
|
||||
#define RC_CAN_DR16_SWITCH_ID 0x351 // 拨杆数据
|
||||
#define RC_CAN_DR16_MOUSE_ID 0x352 // 鼠标数据
|
||||
#define RC_CAN_DR16_KEYBOARD_ID 0x353 // 键盘数据
|
||||
#define RC_CAN_DR16_STATUS_ID 0x354 // 状态数据
|
||||
|
||||
/* Exported macro ----------------------------------------------------------- */
|
||||
/* Exported types ----------------------------------------------------------- */
|
||||
|
||||
typedef enum {
|
||||
RC_CAN_SW_ERR = 0,
|
||||
RC_CAN_SW_UP = 1,
|
||||
@ -36,20 +34,38 @@ typedef enum {
|
||||
RC_CAN_SW_DOWN = 2,
|
||||
} RC_CAN_SW_t;
|
||||
|
||||
typedef enum {
|
||||
DR16_KEY_W = 0,
|
||||
DR16_KEY_S,
|
||||
DR16_KEY_A,
|
||||
DR16_KEY_D,
|
||||
DR16_KEY_SHIFT,
|
||||
DR16_KEY_CTRL,
|
||||
DR16_KEY_Q,
|
||||
DR16_KEY_E,
|
||||
DR16_KEY_R,
|
||||
DR16_KEY_F,
|
||||
DR16_KEY_G,
|
||||
DR16_KEY_Z,
|
||||
DR16_KEY_X,
|
||||
DR16_KEY_C,
|
||||
DR16_KEY_V,
|
||||
DR16_KEY_B,
|
||||
DR16_KEY_NUM,
|
||||
} DR16_Key_t;
|
||||
// 遥杆数据包 (CAN ID: 0x300)
|
||||
typedef struct __packed {
|
||||
int16_t ch_l_x; // 左侧摇杆X轴 (-1000~1000)
|
||||
int16_t ch_l_y; // 左侧摇杆Y轴 (-1000~1000)
|
||||
int16_t ch_r_x; // 右侧摇杆X轴 (-1000~1000)
|
||||
int16_t ch_r_y; // 右侧摇杆Y轴 (-1000~1000)
|
||||
} RC_CAN_JoystickData_t;
|
||||
typedef struct {
|
||||
int16_t ch_l_x;
|
||||
int16_t ch_l_y;
|
||||
int16_t ch_r_x;
|
||||
int16_t ch_r_y;
|
||||
} RC_CAN_JoyData_t;
|
||||
|
||||
// 拨杆数据包 (CAN ID: 0x301)
|
||||
typedef struct __packed {
|
||||
uint8_t sw_l; // 左拨杆状态
|
||||
uint8_t sw_r; // 右拨杆状态
|
||||
RC_CAN_SW_t sw_l; // 左拨杆状态
|
||||
RC_CAN_SW_t sw_r; // 右拨杆状态
|
||||
int16_t ch_res; // 第五通道 (-1000~1000)
|
||||
uint32_t reserved; // 保留字节
|
||||
} RC_CAN_SwitchData_t;
|
||||
|
||||
// 鼠标数据包 (CAN ID: 0x302)
|
||||
@ -57,14 +73,14 @@ typedef struct __packed {
|
||||
int16_t mouse_x; // 鼠标X轴移动
|
||||
int16_t mouse_y; // 鼠标Y轴移动
|
||||
int16_t mouse_z; // 鼠标Z轴(滚轮)
|
||||
uint8_t mouse_l; // 鼠标左键
|
||||
uint8_t mouse_r; // 鼠标右键
|
||||
bool mouse_l; // 鼠标左键
|
||||
bool mouse_r; // 鼠标右键
|
||||
} RC_CAN_MouseData_t;
|
||||
|
||||
// 键盘数据包 (CAN ID: 0x303)
|
||||
typedef struct __packed {
|
||||
typedef union {
|
||||
uint16_t key_value; // 键盘按键位映射
|
||||
uint8_t reserved[6]; // 保留字节
|
||||
DR16_Key_t keys[16]; // 按键数组
|
||||
} RC_CAN_KeyboardData_t;
|
||||
|
||||
// 状态数据包 (CAN ID: 0x304)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user