STM32 hal库串口DMA模式收发定长数据

♀尐吖头ヾ 提交于 2020-02-12 00:19:32
//DMA接收定义为循环模式,只能接受定长数据
//串口DMA中断调用的回调函数和串口接收中断是同一个
uint8_t rxch[5];
uint8_t trch[]="transmit dma:\r\n";
int main(void)
{
HAL_UART_Transmit_DMA(&huart1,trch,15);
HAL_UART_Receive_DMA(&huart1,rxch,5);
  while (1)
  {
  }

}
//DMA接收完成回调函数和这是同一个
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==USART1)
  {
      printf("%s\r\n",rxch);
      HAL_UART_Transmit_DMA(&huart1,rxch,5);
  }

}

//DMA传输完成回调函数和这是同一个
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
	uint8_t tx_str[] = "Data Transfer completed\r\n";
	HAL_UART_Transmit(&huart1,tx_str,sizeof(tx_str),200);
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!