stm32l 库的USART DMA 没有发送完数据就进入发送完全中断函数?

2019-12-25 18:51发布

stm32l 库的USART DMA没有完数据就进入发送完全中断函数,导致每次都只能发送几个数据,这是什么原因?
初始化  DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE);

DMA 中断函数
void DMA1_Channel2_IRQHandler(void)
{
  
        //RS485_R;
        if(DMA_GetFlagStatus(DMA1_FLAG_TC2) != RESET)
        {
           DMA_ClearFlag(DMA1_FLAG_TC2);
                 DMA_ClearITPendingBit(DMA1_IT_TC2);
    RS485_R;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
ZMHCISS
1楼-- · 2019-12-25 18:52
DMA中断打开后,会有3个中断请求,包括发送完,发送一半和发送错误
why800
2楼-- · 2019-12-25 20:11
 精彩回答 2  元偷偷看……
zhouyan
3楼-- · 2019-12-26 02:09
why800 发表于 2017-8-14 20:28
发送完成中断产生后,还有一个字节没发呢。dma发送完成是指传输完成,dma将最后一个字节写入了发送寄存器。 ...

感谢兄台的回复,这种情况怎么处理呢?
怎么才能完全处理呢?
zhouyan
4楼-- · 2019-12-26 04:55
ZMHCISS 发表于 2017-8-14 19:14
DMA中断打开后,会有3个中断请求,包括发送完,发送一半和发送错误

现在是完全中断,楼下回答!
xiaowu191
5楼-- · 2019-12-26 05:42
多发数据或使用串口发送完成中断
hushaoxin
6楼-- · 2019-12-26 09:52
发送完成中断,并不代表数据都发出了,要用串口发送完成中断

一周热门 更多>