Conmi·白小丑 2021-07-20 23:34 采纳率: 25%
浏览 41

为什么我的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 */
}
  • 写回答

3条回答 默认 最新

  • 咸鱼丶的自我修养 2021-07-21 10:21
    关注

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

    评论

报告相同问题?

问题事件

  • 修改了问题 7月20日
  • 创建了问题 7月20日