野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19678|回复: 1

求教:串口DMA+空闲中断,只能接收到第一次发送的数据

[复制链接]
发表于 2021-2-27 08:08:23 | 显示全部楼层 |阅读模式
       我用DMA+空闲接收不定长数据,然后回传。程序在f103上运行时第一次发送的数据能够回传,但之后发送就只回传第一次的数据,但在f405的板子上跑就没问题。


       代码截图如下,我自己加的都高亮了
屏幕截图 2021-02-27 074351.png 在main.c中接收缓冲区
屏幕截图 2021-02-27 074710.png 在stm32f1xx_hal_msp.c中HAL_UART_MspInit内使能空闲中断
屏幕截图 2021-02-27 074538.png 在main.c中使能串口DMA接收

在tm32f1xx_it.c中USART1_IRQHandler里添加空闲中断的判定,
若产生空闲中断,则清除标志并执行自定义的回调函数USER_UART_IdleCpltCallback
在main.c中定义HAL_UART_RxCpltCallback和USER_UART_IdleCpltCallback

屏幕截图 2021-02-27 080609.png
只能重复第一条数据
求各位大大给予指教qwq
屏幕截图 2021-02-27 074909.png
屏幕截图 2021-02-27 074954.png
回复

使用道具 举报

发表于 2021-3-1 09:32:35 | 显示全部楼层
进debug看下接收不正常的时候,中断有没有被关掉,我记得HAL库有些操作会关掉外设的中断
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 21:45 , Processed in 0.029049 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表