本文主要是介绍cubeIDE之串口空闲中断注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1:在配置完成后的main函数中不可使能接收中断
// __HAL_UART_ENABLE_IT(&huart4, UART_IT_RXNE);//接收中断__HAL_UART_ENABLE_IT(&huart4, UART_IT_IDLE);//空闲中断HAL_UART_Receive_DMA(&huart4,rx4_buffer, 255);//使能MDA接收HAL_UART_Transmit(&huart4, (uint8_t *)aTxStartMessage, sizeof(aTxStartMessage),1000);
2:中断处理时必须停止DMA,负责缓冲数组箭头指向上一些的位置
__HAL_UART_CLEAR_IDLEFLAG(&huart4);//清楚空闲中断标志位HAL_UART_DMAStop(&huart4);//停止DMAtemp = __HAL_DMA_GET_COUNTER(huart4.hdmarx);//获取缓冲长度rx4_len = 255 - temp;HAL_UART_Transmit(&huart4, (uint8_t *)rx4_buffer,rx4_len,1000);//发送返回memset(rx4_buffer,0,255);//清零rx4_len=0;temp=0;HAL_UART_Receive_DMA(&huart4,(uint8_t *)rx4_buffer, 255);//重新使能DMA
3:如果不是关停DMA的后果
一句话总结:DMA不会以0位重新开始,而是上一次的位置
这篇关于cubeIDE之串口空闲中断注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!