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

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

jianxuan5527

 

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

各位大神 请教一下,stm32f767使用QSPI实现内存映射的问题

未设置标签
1 回答

DMA发送数据后,会造成串口中断接收到一个字节的数据

未设置标签
wenyangzeng wenyangzeng 回答时间: 2019-5-23 21:15

楼主对DMA和串口硬件的描述不清楚。判断是DMA的下(上)位机接收到数据产生的信号发送,而非本机的问题。

赞0
1 回答

串口DMA发送和中断接收的问题?

未设置标签
jianxuan5527 jianxuan5527 回答时间: 2019-5-23 09:19

这块是中断的处理代码 void USART3_IRQHandler()       //串口3中断接收数据 {         RxTimeout =10;         HAL_NVIC_ClearPendingIRQ(USART3_IRQn);    // 清除中断标志位     解决使用DMA发送后,一直进入接收中断的问题                 HAL_UART_IRQHandler(&Uart3Handle);     //中断处理函数   清除中断标注位    会间接的调用接收回调函数     if (RxCount< Rx_MAXSIZE)             //接收缓冲区没满  还可以接收数据         {                 RxBuf[RxCount++]=RxData;           //接收的数据放在接受缓冲区中         }         else         {                  USART3_RX_STA|=1<<15;                                //缓冲区已满 强制标记接收完成                                  ReceCount=RxCount;                //记录接收到的数据个数                  RxCount=0;                         //接收数量清零                  RxTimeout=0;                       //接收超时清零         }         HAL_UART_Receive_IT(&Uart3Handle, (uint8_t *)(&RxData), 1);     //** 接收完成后会关闭中断所以要循环调用次函数 接收一个字节进入一次接收完成回调函数 } void DMA1_Channel2_IRQHandler(void) {         HAL_DMA_IRQHandler(Uart3Handle.hdmatx); } 在定时器里进行超时的接收完成 __weak void HAL_IncTick(void) {   uwTick++;                 if (RxTimeout>0)                                                    //2019-05-20  zhang         {                 RxTimeout--;                 if(RxTimeout==0)                 {                         USART3_RX_STA|=1<<15;                          //接收超时 标记接收完成                         ReceCount =RxCount;              //记录接收到的数据个数                         RxCount=0;                         //接收数量清零                     RxTimeout=0;                       //接收超时清零                 }                                }                                                } 在主函数里面判断 接收标志位,将收到的数据发送回来           if(USART3_RX_STA&0X8000)                //接收到数据     {                 HAL_sta=HAL_UART_Transmit_DMA(&Uart3Handle,RxBuf, ReceCount);                                 while(TX_END !=1)  {} //等待放松完成                                         //HAL_UART_Transmit(&UartHandle,RxBuf, ReceCount,2000);                 ReceCount=0;                 USART3_RX_STA=0;     }

赞0
jianxuan5527 jianxuan5527


阅读作者更多的帖子

所在话题

参与活动

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

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

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

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

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

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

    线下 2020-10-16