/*
使用串口DMA发送+空闲中断
注意使能串口中断和DMA中断
考虑发送超时处理机制。
*/
void init_Myuart(void){
HAL_UARTEx_ReceiveToIdle_DMA(&huart1,rx_buf, sizeof(rx_buf));
}
void myuart_send(uint8_t * send_data,uint16_t lenght)
{
HAL_UART_Transmit_DMA(&huart1,(uint8_t *)&send_data,lenght));
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1) {
;
}
if(huart->Instance == USART2) {
;
}
}
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
if (huart->Instance == USART1) {
;
}
if(huart->Instance == USART2) {
;
}
}
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
HAL_UARTEx_ReceiveToIdle_DMA(&huart1,rx_buf, sizeof(rx_buf)-1);//回调完后需要再次启用
/* USER CODE END USART1_IRQn 1 */
}