OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3776|回复: 1

检测DMA是否传输完成时的问题

[复制链接]

5

主题

10

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2023-2-5
在线时间
8 小时
发表于 2023-4-1 23:16:22 | 显示全部楼层 |阅读模式
1金钱
#include "stm32f10x.h"
#include "stm32f10x_dma.h"
#include "bsp_led.h"
#include "dma_bsp_mtm.h"
void Delay(__IO uint32_t nCount);
extern const uint32_t aSRC_Const_Buffer[BUFFER_SIZE];
extern uint32_t aDST_Buffer[BUFFER_SIZE];


int main(void)
{


        uint8_t status=0;
        LED_GPIO_Config();
        LED1_ON;
        LED2_ON;
        Delay(0xFFFFFF);
       
        MtM_DMA_Config();
        while( DMA_GetFlagStatus(DMA1_FLAG_TC6) == SET );        //==1         在通道x产生了传输完成事件(TC)

        status = Buffercmp(aSRC_Const_Buffer,aDST_Buffer,BUFFER_SIZE);
        if(status == 0)
        {
                LED1_OFF;
                LED2_ON;
        }
        else
        {
                LED1_ON;
                LED2_OFF;
               
        }


        while(1)
        {


        }       
}


void Delay(__IO uint32_t nCount)
{
        for(; nCount != 0; nCount--);
}

检测DMA是否传输完成时,我的是==set也能检测成功,野火视频上是==reset也可以. 是什么原因

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-4-3 13:08:38 | 显示全部楼层
传输完成标志是SET,若程序中是==reset,程序运行到while语句时传输未完成那么while就退出继续运行后面的语句;
若在while之前传输已完成,那么while语句就可能死循环;建议在while前加延时,看能否验证.
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 12:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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