你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
Nick20150702

Nick20150702

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
30 回答

HAL_UART_Receive_DMA 和 HAL_UART_Transmit_DMA 怎么用 在线等呢.

未设置标签
jqwx2010 jqwx2010 回答时间: 2016-12-27 02:04

据我实测: 使用串口DMA接收数据,即使不使用“接收一半数据中断”,在接收一半数据后,也会触发相应的DMA通道中断句柄,全部数据接收完成后,又触发相应的DMA通道中断句柄,通过DMA通道中断句柄,而DMA中断句柄最终还是会调用串口接收中断回调函数,所以最终接收的数据可以通过重载串口接收中断回调函数来处理 在stm32f1xx_it.c中的与串口接收相关的DMA通道中断句柄函数,注意这个中断句柄与接收或发送相对应,也就是说发送和接收是2个不同DMA通道中断句柄。比如使用  HAL_UART_Receive_DMA(&huart1,(uint8_t *)aRxMessage,6) 在下面的代码中,我接收到3个数据就会触发printf("here DMA1_Channel5_IRQHandler")  接收到6个数据,又触发printf("here DMA1_Channel5_IRQHandler"),同时这接收到的6个数据,通过重载串口接收中断回调函数来处理//stm32f1xx_it.c中的DMA中断句柄 void DMA1_Channel5_IRQHandler(void) {   /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */   /* USER CODE END DMA1_Channel5_IRQn 0 */     printf("here DMA1_Channel5_IRQHandler");   HAL_DMA_IRQHandler(&hdma_usart1_rx);//串口接收DMA通道   /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */   /* USER CODE END DMA1_Channel5_IRQn 1 */ }复制代码//在main.c中通过重载来处理DMA接收的数据 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {   /* Prevent unused argument(s) compilation warning */   UNUSED(huart);         //printf("%c",aRxBuffer[ss]);          /* NOTE : This function should not be modified, when the callback is needed,             the HAL_UART_RxCpltCallback can be implemented in the user file    */        for (i=0;i<100;i++){                             printf("%c",aRxMessage);                     }        HAL_UART_Receive_DMA(&huart1,(uint8_t *)aRxMessage,10);             //HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 10,0xFFFF); } /* USER CODE END 4 */复制代码

赞0
Nick20150702 Nick20150702


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16