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

STM32 串口接收DMA模式

[复制链接]
王熊猫 提问时间:2017-7-26 16:22 /
1。芯片:stm32f2072.使用串口DMA模式进行通信,从串口向内存搬运。每次传送的数据包大小为14字节,dma设置的接收数据量为128字节,串口空闲中断和DMA接收完成中断打开。
其中串口空闲中断程序如下:
void USART1_IRQHandler(void)
{
    OSIntEnter();
    if (USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)
    {
        if (DMA_GetCmdStatus(DMA2_Stream2) == ENABLE)
        {
            /*
             * Disable the DMA Rx Stream and wait DMA operation complete
             * until DMA2_Stream2_IRQHandler() interrupt
             */
            DMA_Cmd(DMA2_Stream2, DISABLE);
        }

        /* clear the IDLE flag */
        USART_ReceiveData(USART1);
    }
    OSIntExit();
}



我不太明白的是在串口中断程序里面disable DMA功能后,为什么还能触发DMA接收完成中断啊?难道DMA功能禁止后,还在继续搬运,直到搬运的数据大小达到设置好的大小为止?望大神指点。


收藏 评论2 发布时间:2017-7-26 16:22

举报

2个回答
MrJiu 回答时间:2017-7-27 09:14:07
我印象里面,好像是禁止DMA的时候,会把这个周期执行完,具体,我觉得你可以看看参考资料!!!
王熊猫 回答时间:2017-7-28 17:07:03
MrJiu 发表于 2017-7-27 09:14
我印象里面,好像是禁止DMA的时候,会把这个周期执行完,具体,我觉得你可以看看参考资料!!! ...

我看的数据手册里面对DMA没有这方面的介绍啊,不过谢谢你了。我准备再去找找资料。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版