mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-24 11:37:45 +08:00
完成了LKmotor模块的重构,优化了DJIMotor的反馈计算
This commit is contained in:
@@ -9,22 +9,19 @@ static RC_ctrl_t rc_ctrl[2]; //[0]:当前数据,[1]:上一次的数据.用于按
|
||||
// 遥控器拥有的串口实例
|
||||
static USARTInstance *rc_usart_instance;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 矫正遥控器摇杆的值
|
||||
*
|
||||
*
|
||||
*/
|
||||
static void RectifyRCjoystick()
|
||||
{
|
||||
for (uint8_t i = 0; i < 5; i++)
|
||||
{
|
||||
if(rc_ctrl[TEMP].rc.joystick[i]>660 || rc_ctrl[TEMP].rc.joystick[i]<-660)
|
||||
rc_ctrl[TEMP].rc.joystick[i]=0;
|
||||
if (*(&rc_ctrl[TEMP].rc.rocker_l_+i) > 660 || *(&rc_ctrl[TEMP].rc.rocker_l_+i) < -660)
|
||||
*(&rc_ctrl[TEMP].rc.rocker_l_+i) = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief remote control protocol resolution
|
||||
* @param[in] sbus_buf: raw data point
|
||||
@@ -35,15 +32,15 @@ static void sbus_to_rc(volatile const uint8_t *sbus_buf)
|
||||
{
|
||||
memcpy(&rc_ctrl[1], &rc_ctrl[TEMP], sizeof(RC_ctrl_t)); // 保存上一次的数据
|
||||
// 摇杆,直接解算时减去偏置
|
||||
rc_ctrl[TEMP].rc.joystick[0] = ((sbus_buf[0] | (sbus_buf[1] << 8)) & 0x07ff)- RC_CH_VALUE_OFFSET ; //!< Channel 0
|
||||
rc_ctrl[TEMP].rc.joystick[1] = (((sbus_buf[1] >> 3) | (sbus_buf[2] << 5)) & 0x07ff)- RC_CH_VALUE_OFFSET ; //!< Channel 1
|
||||
rc_ctrl[TEMP].rc.joystick[2] = (((sbus_buf[2] >> 6) | (sbus_buf[3] << 2) | (sbus_buf[4] << 10)) & 0x07ff)- RC_CH_VALUE_OFFSET ; //!< Channel 2
|
||||
rc_ctrl[TEMP].rc.joystick[3] = (((sbus_buf[4] >> 1) | (sbus_buf[5] << 7)) & 0x07ff)- RC_CH_VALUE_OFFSET ; //!< Channel 3
|
||||
rc_ctrl[TEMP].rc.joystick[4] = ((sbus_buf[16] | (sbus_buf[17] << 8)) & 0x07FF)- RC_CH_VALUE_OFFSET; // 左侧拨轮
|
||||
rc_ctrl[TEMP].rc.rocker_r_ = ((sbus_buf[0] | (sbus_buf[1] << 8)) & 0x07ff) - RC_CH_VALUE_OFFSET; //!< Channel 0
|
||||
rc_ctrl[TEMP].rc.rocker_r1 = (((sbus_buf[1] >> 3) | (sbus_buf[2] << 5)) & 0x07ff) - RC_CH_VALUE_OFFSET; //!< Channel 1
|
||||
rc_ctrl[TEMP].rc.rocker_l_ = (((sbus_buf[2] >> 6) | (sbus_buf[3] << 2) | (sbus_buf[4] << 10)) & 0x07ff) - RC_CH_VALUE_OFFSET; //!< Channel 2
|
||||
rc_ctrl[TEMP].rc.rocker_l1 = (((sbus_buf[4] >> 1) | (sbus_buf[5] << 7)) & 0x07ff) - RC_CH_VALUE_OFFSET; //!< Channel 3
|
||||
rc_ctrl[TEMP].rc.dial = ((sbus_buf[16] | (sbus_buf[17] << 8)) & 0x07FF) - RC_CH_VALUE_OFFSET; // 左侧拨轮
|
||||
RectifyRCjoystick();
|
||||
// 开关,0左1右
|
||||
rc_ctrl[TEMP].rc.s[0] = ((sbus_buf[5] >> 4) & 0x0003); //!< Switch left
|
||||
rc_ctrl[TEMP].rc.s[1] = ((sbus_buf[5] >> 4) & 0x000C) >> 2; //!< Switch right
|
||||
rc_ctrl[TEMP].rc.switch_right = ((sbus_buf[5] >> 4) & 0x0003); //!< Switch left
|
||||
rc_ctrl[TEMP].rc.switch_left = ((sbus_buf[5] >> 4) & 0x000C) >> 2; //!< Switch right
|
||||
|
||||
// 鼠标解析
|
||||
rc_ctrl[TEMP].mouse.x = sbus_buf[6] | (sbus_buf[7] << 8); //!< Mouse X axis
|
||||
@@ -98,5 +95,5 @@ RC_ctrl_t *RemoteControlInit(UART_HandleTypeDef *rc_usart_handle)
|
||||
conf.usart_handle = rc_usart_handle;
|
||||
conf.recv_buff_size = REMOTE_CONTROL_FRAME_SIZE;
|
||||
rc_usart_instance = USARTRegister(&conf);
|
||||
return (RC_ctrl_t*)&rc_ctrl;
|
||||
return (RC_ctrl_t *)&rc_ctrl;
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "main.h"
|
||||
#include "usart.h"
|
||||
|
||||
//
|
||||
//
|
||||
#define LAST 1
|
||||
#define TEMP 0
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define KEY_PRESS_WITH_CTRL 2
|
||||
#define KEY_PRESS_WITH_SHIFT 3
|
||||
|
||||
// 检查接受值是否出错
|
||||
// 检查接收值是否出错
|
||||
#define RC_CH_VALUE_MIN ((uint16_t)364)
|
||||
#define RC_CH_VALUE_OFFSET ((uint16_t)1024)
|
||||
#define RC_CH_VALUE_MAX ((uint16_t)1684)
|
||||
@@ -87,8 +87,14 @@ typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int16_t joystick[5]; // 右|0 ,右-1 ,左-2 ,左|3 ,拨轮4
|
||||
uint8_t s[2]; //[0]:left [1]:right
|
||||
int16_t rocker_l_; // 左水平
|
||||
int16_t rocker_l1; // 左竖直
|
||||
int16_t rocker_r_; // 右水平
|
||||
int16_t rocker_r1; // 右竖直
|
||||
int16_t dial; // 侧边拨轮
|
||||
|
||||
uint8_t switch_left; // 左侧开关
|
||||
uint8_t switch_right; // 右侧开关
|
||||
} rc;
|
||||
struct
|
||||
{
|
||||
@@ -101,12 +107,10 @@ typedef struct
|
||||
|
||||
uint16_t key_temp;
|
||||
uint8_t key[4][16]; // 当前使用的键盘索引
|
||||
Key_t key_test[4]; // 改为位域后的键盘索引,空间减少8倍,速度增加16~倍
|
||||
// Key_t key_test[4]; // 改为位域后的键盘索引,空间减少8倍,速度增加16~倍
|
||||
|
||||
} RC_ctrl_t;
|
||||
|
||||
|
||||
|
||||
/* ------------------------- Internal Data ----------------------------------- */
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user