添加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 ----------------------------------------------------------------- */
|
/* Includes ----------------------------------------------------------------- */
|
||||||
#include "rc_can.h"
|
#include "rc_can.h"
|
||||||
#include "device/dr16.h"
|
|
||||||
#include "bsp/time.h"
|
#include "bsp/time.h"
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/* USER INCLUDE BEGIN */
|
/* USER INCLUDE BEGIN */
|
||||||
|
|
||||||
|
|||||||
@ -19,16 +19,14 @@ extern "C" {
|
|||||||
/* USER DEFINE END */
|
/* USER DEFINE END */
|
||||||
|
|
||||||
/* Exported constants ------------------------------------------------------- */
|
/* Exported constants ------------------------------------------------------- */
|
||||||
// CAN ID 定义
|
#define RC_CAN_DR16_JOY_ID 0x350 // 遥杆数据
|
||||||
#define RC_CAN_DR16_JOYSTICK_ID 0x300 // 遥杆数据
|
#define RC_CAN_DR16_SWITCH_ID 0x351 // 拨杆数据
|
||||||
#define RC_CAN_DR16_SWITCH_ID 0x301 // 拨杆数据
|
#define RC_CAN_DR16_MOUSE_ID 0x352 // 鼠标数据
|
||||||
#define RC_CAN_DR16_MOUSE_ID 0x302 // 鼠标数据
|
#define RC_CAN_DR16_KEYBOARD_ID 0x353 // 键盘数据
|
||||||
#define RC_CAN_DR16_KEYBOARD_ID 0x303 // 键盘数据
|
#define RC_CAN_DR16_STATUS_ID 0x354 // 状态数据
|
||||||
#define RC_CAN_DR16_STATUS_ID 0x304 // 状态数据
|
|
||||||
|
|
||||||
/* Exported macro ----------------------------------------------------------- */
|
/* Exported macro ----------------------------------------------------------- */
|
||||||
/* Exported types ----------------------------------------------------------- */
|
/* Exported types ----------------------------------------------------------- */
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RC_CAN_SW_ERR = 0,
|
RC_CAN_SW_ERR = 0,
|
||||||
RC_CAN_SW_UP = 1,
|
RC_CAN_SW_UP = 1,
|
||||||
@ -36,20 +34,38 @@ typedef enum {
|
|||||||
RC_CAN_SW_DOWN = 2,
|
RC_CAN_SW_DOWN = 2,
|
||||||
} RC_CAN_SW_t;
|
} 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)
|
// 遥杆数据包 (CAN ID: 0x300)
|
||||||
typedef struct __packed {
|
typedef struct {
|
||||||
int16_t ch_l_x; // 左侧摇杆X轴 (-1000~1000)
|
int16_t ch_l_x;
|
||||||
int16_t ch_l_y; // 左侧摇杆Y轴 (-1000~1000)
|
int16_t ch_l_y;
|
||||||
int16_t ch_r_x; // 右侧摇杆X轴 (-1000~1000)
|
int16_t ch_r_x;
|
||||||
int16_t ch_r_y; // 右侧摇杆Y轴 (-1000~1000)
|
int16_t ch_r_y;
|
||||||
} RC_CAN_JoystickData_t;
|
} RC_CAN_JoyData_t;
|
||||||
|
|
||||||
// 拨杆数据包 (CAN ID: 0x301)
|
// 拨杆数据包 (CAN ID: 0x301)
|
||||||
typedef struct __packed {
|
typedef struct __packed {
|
||||||
uint8_t sw_l; // 左拨杆状态
|
RC_CAN_SW_t sw_l; // 左拨杆状态
|
||||||
uint8_t sw_r; // 右拨杆状态
|
RC_CAN_SW_t sw_r; // 右拨杆状态
|
||||||
int16_t ch_res; // 第五通道 (-1000~1000)
|
int16_t ch_res; // 第五通道 (-1000~1000)
|
||||||
uint32_t reserved; // 保留字节
|
|
||||||
} RC_CAN_SwitchData_t;
|
} RC_CAN_SwitchData_t;
|
||||||
|
|
||||||
// 鼠标数据包 (CAN ID: 0x302)
|
// 鼠标数据包 (CAN ID: 0x302)
|
||||||
@ -57,14 +73,14 @@ typedef struct __packed {
|
|||||||
int16_t mouse_x; // 鼠标X轴移动
|
int16_t mouse_x; // 鼠标X轴移动
|
||||||
int16_t mouse_y; // 鼠标Y轴移动
|
int16_t mouse_y; // 鼠标Y轴移动
|
||||||
int16_t mouse_z; // 鼠标Z轴(滚轮)
|
int16_t mouse_z; // 鼠标Z轴(滚轮)
|
||||||
uint8_t mouse_l; // 鼠标左键
|
bool mouse_l; // 鼠标左键
|
||||||
uint8_t mouse_r; // 鼠标右键
|
bool mouse_r; // 鼠标右键
|
||||||
} RC_CAN_MouseData_t;
|
} RC_CAN_MouseData_t;
|
||||||
|
|
||||||
// 键盘数据包 (CAN ID: 0x303)
|
// 键盘数据包 (CAN ID: 0x303)
|
||||||
typedef struct __packed {
|
typedef union {
|
||||||
uint16_t key_value; // 键盘按键位映射
|
uint16_t key_value; // 键盘按键位映射
|
||||||
uint8_t reserved[6]; // 保留字节
|
DR16_Key_t keys[16]; // 按键数组
|
||||||
} RC_CAN_KeyboardData_t;
|
} RC_CAN_KeyboardData_t;
|
||||||
|
|
||||||
// 状态数据包 (CAN ID: 0x304)
|
// 状态数据包 (CAN ID: 0x304)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user