高级会员

- 积分
- 607
- 金钱
- 607
- 注册时间
- 2015-9-7
- 在线时间
- 141 小时
|
求教STM32F0 串口空闲中断DMA接收问题,我发现有时候DMA接收只能接收到第一个BYTE,推测可能是正在发送的时候,有接收,所以只能第一个byte?以下是我中断接收过程代码
if(huart==WIFI_UART)
{
//当触发了串口空闲中断
if((__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) != RESET))
{
if(huart->Instance == USART2)
{
/* 1.清除标志 */
__HAL_UART_CLEAR_IDLEFLAG(huart); //清除空闲标志
/* 2.读取DMA */
HAL_UART_DMAStop(huart); //先停止DMA,暂停接收
//这里应注意数据接收不要大于 USART_REC_LEN
WIFI_rx_len = rx_buff_size - (__HAL_DMA_GET_COUNTER(&hdma_usart2_rx)); //接收个数等于接收缓冲区总大小减已经接收的个数
WIFI_rx_start = 1; //标志已经成功接收到一包等待处理
rx_proce();
/* 4.开启新的一次DMA接收 */
HAL_UART_Receive_DMA(WIFI_UART,WIFI_BUFF,rx_buff_size); //启动接收
}
}
}
|
|