简介
DT7 DR16 RM操控遥控器 通过控制 在debug里面显示对应数值的变化 日后发给机器人 实现遥控 同时还有鼠标键盘滚轮的操作
配置
CubeMX里面开串口3(特别的)可以开DMA也可以不开 后面有两套代码 然后使能中断 别的没了
注意通信协议 波特率100k 偶校验 9位 不然发不出
代码
新建ReC.c.h文件 在里面写对应的解算和回调函数
下面两个回调 一套适用于中断接收 一套适用于DMA
这里两个用了不同的缓冲区 按名称区分 都可以用
//ReC.c
uint8_t RC_usart_rx_buff[RC_FRAME_LENGTH];
uint8_t RC_dma_rx_buff[RC_FRAME_LENGTH];
Remote_Control RC;
Mouse M;
Key K;
Wheel W;
void RC_USART3_IT_IRQHandler(UART_HandleTypeDef *huart)
{
static uint8_t rxCnt=0;
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RXNE))
{
__HAL_UART_CLEAR_NEFLAG(huart);
RC_usart_rx_buff[rxCnt++] = huart->Instance->DR;
}
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))
{
/* clear idle it flag avoid idle interrupt all the time */
__HAL_UART_CLEAR_IDLEFLAG(huart);
RC_DataHandle(RC_usart_rx_buff);
rxCnt = 0;
}
}
void RC_USART3_DMA_IRQHandler(UART_HandleTypeDef *huart)
{
uint32_t rx_data_len = 0;
if((__HAL_UART_GET_FLAG(huart,UART_FLAG_IDLE)!=RESET))
{
__HAL_UART_CLEAR_IDLEFLAG(huart);
(void)USART1->SR;
(void)USART1->DR;
__HAL_DMA_CLEAR_FLAG(huart,DMA_FLAG_TCIF2_6);
HAL_UART_DMAStop