打印

关于串口DMA等待传输完成卡死的问题

[复制链接]
29555|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
宋先森|  楼主 | 2023-11-14 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
型号AT32F407,在USART2  DMA发送数据时,接包已经接到了要发送的数据,但是程序还是处于等待传输完成的标识判断中,卡死了。请教一下是什么造成的?

使用特权

评论回复
沙发
宋先森|  楼主 | 2023-11-14 15:40 | 只看该作者

关于串口DMA等待传输完成卡死的问题

        usart_dma_transmitter_enable(USART2,TRUE);          //开启USART1 DMA 发送
        dma_channel_enable(DMA1_CHANNEL1, TRUE); /* usart2 tx begin dma transmitting */
        while(dma_flag_get(DMA1_FDT1_FLAG)==RESET);        //等待传输完成   //************卡在在这里**********//
    dma_flag_clear(DMA1_FDT1_FLAG);                     //清标志
    dma_channel_enable(DMA1_CHANNEL1, FALSE);           //关闭通道4
    usart_dma_transmitter_enable(USART2,FALSE);         //关闭USART1 DMA 发送

使用特权

评论回复
板凳
muyichuan2012| | 2023-11-14 18:05 | 只看该作者

使用特权

评论回复
地板
qintian0303| | 2023-11-15 08:43 | 只看该作者
一般直接通过非中断,非DMA发送

使用特权

评论回复
5
两只袜子| | 2023-11-15 09:54 | 只看该作者
有可能USART2 DMA硬件本身存在问题,例如硬件故障或与DMA相关的配置错误。

使用特权

评论回复
6
jcky001| | 2023-11-15 09:54 | 只看该作者
可能没有正确地配置DMA,或者在数据传输完成之前尝试读取或写入数据。

使用特权

评论回复
7
cr315| | 2023-11-15 09:55 | 只看该作者
可能是中断处理问题

使用特权

评论回复
8
elephant00| | 2023-11-15 09:55 | 只看该作者
可能是这个标识的判断逻辑存在问题

使用特权

评论回复
9
宋先森|  楼主 | 2023-11-15 10:38 | 只看该作者
是因为我配置了DMA1_FDT1_FLAG中断,并在中断中清除了一下标识并且关闭了通道,就不可以使用。在程序中等待并清除就可以使用

使用特权

评论回复
评论
宋先森 2023-11-15 10:45 回复TA
补充一下因为自己作为log输出的,所以在之前关闭中断保护了一下,就产生错误了 
10
xch| | 2023-11-15 12:05 | 只看该作者
宋先森 发表于 2023-11-14 15:40
usart_dma_transmitter_enable(USART2,TRUE);          //开启USART1 DMA 发送
        dma_channel_enable(DMA1_ ...

搞得更小女人一样,露个小手还得悬丝搭脉诊断。程序代码太少了。

使用特权

评论回复
11
forgot| | 2023-11-17 09:11 | 只看该作者
是不是DMA通道不对,我看你的注释写得是开启USART1 DMA 发送,可以通过调试看看DMA寄存器值

使用特权

评论回复
12
lzmm| | 2023-12-7 21:52 | 只看该作者
DMA的配置不正确可能会导致传输失败或者卡死。

使用特权

评论回复
13
alvpeg| | 2023-12-8 08:46 | 只看该作者
调整DMA缓冲区大小              

使用特权

评论回复
14
hilahope| | 2023-12-8 09:06 | 只看该作者
优化DMA通道的使用,避免同时使用多个DMA通道。

使用特权

评论回复
15
vivilyly| | 2023-12-8 10:31 | 只看该作者
及时清除DMA传输完成的标志位并关闭DMA通道。

使用特权

评论回复
16
10299823| | 2023-12-8 15:35 | 只看该作者
可以设置一个超时时间              

使用特权

评论回复
17
jonas222| | 2023-12-8 16:01 | 只看该作者
为DMA传输设置一个超时时间,如果在规定时间内没有完成传输,则认为传输失败

使用特权

评论回复
18
cemaj| | 2023-12-8 16:29 | 只看该作者
DMA的源地址、目标地址、传输长度等参数设置不正确,或者DMA的触发方式选择不正确等。

使用特权

评论回复
19
chenci2013| | 2023-12-8 16:49 | 只看该作者
DMA传输速度过快可能导致系统无法及时响应

使用特权

评论回复
20
youtome| | 2023-12-8 20:48 | 只看该作者
检查DMA和串口的配置是否正确              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

48

帖子

0

粉丝