底盘能进行前后左右运动

This commit is contained in:
2026-07-22 15:09:00 +08:00
parent 15c5074a0a
commit 523062d89d
8 changed files with 306 additions and 55 deletions

View File

@@ -1,10 +1,10 @@
/**
****************************(C) COPYRIGHT 2019 DJI****************************
* @file remote_control.c/h
* @brief ?????????????????????????SBUS??<3F><>?<3F><>??????DMA????????CPU
* ????????????????<3F><>????????????????????<3F><>????????DMA??????
* ??????????<3F><>???????
* @note ????????????????<3F><>???????????freeRTOS????
* @brief ?????????????????????????SBUS??<3F><>?<3F><>??????DMA????????CPU
* ????????????????<3F><>????????????????????<3F><>????????DMA??????
* ??????????<3F><>???????
* @note ????????????????<3F><>???????????freeRTOS????
* @history
* Version Date Author Modification
* V1.0.0 Dec-01-2019 RM 1. ???
@@ -32,7 +32,7 @@ extern DMA_HandleTypeDef hdma_usart3_rx;
* @retval none
*/
/**
* @brief ?????<3F><>?????
* @brief ?????<3F><>?????
* @param[in] sbus_buf: ??????????
* @param[out] rc_ctrl: ??????????
* @retval none
@@ -47,6 +47,9 @@ RC_ctrl_t rc_ctrl;
//????????????18??????????36????????????DMA???????
static uint8_t sbus_rx_buf[2][SBUS_RX_BUF_NUM];
//遥控器掉线检测:记录最后一次成功解析的时间戳(ms)
static volatile uint32_t rc_last_update_tick = 0;
/**
* @brief remote control init
* @param[in] none
@@ -77,7 +80,7 @@ const RC_ctrl_t *get_remote_control_point(void)
}
//?????<3F><>?
//?????<3F><>?
void RC_USART3_IRQHandler(void)
{
if(huart3.Instance->SR & UART_FLAG_RXNE)//?????????
@@ -95,7 +98,7 @@ void RC_USART3_IRQHandler(void)
/* Current memory buffer used is Memory 0 */
//disable DMA
//?<3F><>DMA
//?<3F><>DMA
__HAL_DMA_DISABLE(&hdma_usart3_rx);
//get receive data length, length = set_data_length - remain_length
@@ -123,7 +126,7 @@ void RC_USART3_IRQHandler(void)
{
/* Current memory buffer used is Memory 1 */
//disable DMA
//?<3F><>DMA
//?<3F><>DMA
__HAL_DMA_DISABLE(&hdma_usart3_rx);
//get receive data length, length = set_data_length - remain_length
@@ -159,7 +162,7 @@ void RC_USART3_IRQHandler(void)
* @retval none
*/
/**
* @brief ?????<3F><>?????
* @brief ?????<3F><>?????
* @param[in] sbus_buf: ??????????
* @param[out] rc_ctrl: ??????????
* @retval none
@@ -191,4 +194,22 @@ static void sbus_to_rc(volatile const uint8_t *sbus_buf, RC_ctrl_t *rc_ctrl)
rc_ctrl->rc.ch[2] -= RC_CH_VALUE_OFFSET;
rc_ctrl->rc.ch[3] -= RC_CH_VALUE_OFFSET;
rc_ctrl->rc.ch[4] -= RC_CH_VALUE_OFFSET;
//更新遥控器最后一次在线时间戳,用于掉线检测
rc_last_update_tick = HAL_GetTick();
}
/**
* @brief check if remote control is online
* @param[in] none
* @retval 1: online, 0: offline (no data for > 100ms)
*/
/**
* @brief 检测遥控器是否在线
* @param[in] none
* @retval 1: 在线, 0: 掉线(超过100ms无数据)
*/
uint8_t is_rc_online(void)
{
return (HAL_GetTick() - rc_last_update_tick) < 100;
}