为什么我的DMA会一直无限重发,而不是间隔1秒重发?

已设置环形,每次发送没有间隔,百度了没结果,故来望助

/* 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 (;;)
  {
    HAL_UART_Transmit_DMA(&huart1, "test111", 7);
    osDelay(1000);
  }
  /* USER CODE END 5 */
}

DMA是独立于CPU的硬件,设置完毕后自己就能工作,CPU不会干预,可以和CPU实现并行处理,上面的延时只是针对CPU的,对DMA没有效果,如果你要实现1秒发一次,建议设置成单次传输,每延迟一秒软件传输一次!!!

有可能osDelay函数库问题,用HAL_Delay吧
如果还是不行,自己写一个function用来延时

经过多次实验得出:https://blog.csdn.net/fengwangzhe000/article/details/118970713
HAL库的普及现在还有待提升~