野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13757|回复: 3

关于dma传输的问题

[复制链接]
发表于 2016-8-1 16:56:09 | 显示全部楼层 |阅读模式
今天写了一个ad采样的程序,用adc1连续采样,dma传输10个数据后触发中断,在中断内对采样数据做平滑处理,进入中断后想先关闭dma传输,在对10个数据求平均值。中断函数如下。





void DMA1_Channel1_IRQHandler(void)
{       
        DMA_Cmd(DMA1_Channel1,DISABLE);
        uint8_t i;
        uint8_t a=0;
        for(i=0;i<10;i++)
        a+=valuedata[i];
        value=a/10;
        DMA_ClearFlag(DMA1_FLAG_TC1);
        DMA_Cmd(DMA1_Channel1,ENABLE);
}


编译后出现错误,变量的定义不能在函数的执行之后declaration may not appear after executable statement in block。但是如果不进入中断函数就关闭dma传输的话,就会造成数据的丢失。有点头疼,希望论坛里的高手可以指点一下。
回复

使用道具 举报

发表于 2016-8-1 17:14:59 | 显示全部楼层
变量定义放前面啊,变量定义不会影响代码执行的

void DMA1_Channel1_IRQHandler(void)
{      

        uint8_t i;
        uint8_t a=0;

        DMA_Cmd(DMA1_Channel1,DISABLE);
回复 支持 反对

使用道具 举报

发表于 2016-8-1 17:54:50 | 显示全部楼层
是的,直接放前面就行了,变量定义是没有机器码的,不执行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-2 11:25:31 | 显示全部楼层
谢谢了,这个问题好像有点蠢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 13:24 , Processed in 0.031257 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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