平台:STM32F103RET6
// stm32f1xx_it.c
/**
* @brief This function handles DMA1 channel4 global interrupt.
*/
void DMA1_Channel4_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel4_IRQn 0 */
// 就是这段可以防止DMA发送完成后不会无限重发
// 一定要放前面,放在后面没用!!!
if (__HAL_DMA_GET_FLAG(&hdma_usart1_tx, DMA_FLAG_TC4))
{
__HAL_DMA_DISABLE(&hdma_usart1_tx);
}
/* USER CODE END DMA1_Channel4_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_usart1_tx);
/* USER CODE BEGIN DMA1_Channel4_IRQn 1 */
/* USER CODE END DMA1_Channel4_IRQn 1 */
}
// main.c
/* USER CODE BEGIN Header_StartDefaultTask */
/**
* @brief Function implementing the defaultTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for (;;)
{
// 每次发送前使能USART1的发送DMA,后面可以做成函数,通过DMA发送可以减少处理的操作
__HAL_DMA_ENABLE(&hdma_usart1_tx);
HAL_UART_Transmit_DMA(&huart1, "test111", 7);
osDelay(1000);
}
/* USER CODE END 5 */
}