HAL_UARTEx_ReceiveToIdle_DMA(&huart1,rx1_buf, sizeof(rx1_buf));//再次开启接收
#define BUFFERSIZE 255 //可接收的最大数据量
extern uint8_t rx1_buf[BUFFERSIZE];//串口1DMA缓存数组
extern uint16_t rx1_size;//串口1DMA数组长度
uint8_t rx1_buf[] = {0};//串口1DMA缓存数组
uint16_t rx1_size = 0;//串口1DMA数组长度
uint8_t i=0;
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)//串口DMA数据接收回调
{
if (huart == &huart1) {//串口1中断,处理屏幕数据
__HAL_UART_CLEAR_IDLEFLAG(&huart1);//清除中断标志
HAL_UART_DMAStop(&huart1);// 暂停DMA接收数据 rx1_buf
if (Size >= sizeof(rx1_buf))//sizeof返回数组长度
Size = sizeof(rx1_buf) – 1;
rx1_size = Size; // 接收数据长度
/*把接收的数据进行判断(速度/温度)*/
if(rx1_buf[0] == 0x55)
{
//判断是速度,串口3发送数据
MotorSpeed();
}
if(rx1_buf[0] == 0x05)
{
//判断是温度,串口2发送数据
TempErature();
//osDelay(100);
}
HAL_UARTEx_ReceiveToIdle_DMA(&huart1,rx1_buf, sizeof(rx1_buf));//再次开启接收
}
}
发送