OpenEdv-开源电子网

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

DMA ADC 收到的数据为0,ADC工作,为什么DMA不工作呢

[复制链接]

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-4-18
在线时间
32 小时
发表于 2019-4-18 17:20:08 | 显示全部楼层 |阅读模式
2金钱
int main(void)
{
        uint16_t  ADCConvertedValue,adcx;
        float temp;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init(168);   
        uart_init(115200);       
        LED_Init();                               
        LCD_Init();                                       
        KEY_Init();                        
        Adc_Init();                               
        MYDMA_Config(DMA2_Stream0,DMA_Channel_0,(u16)&(ADC1->DR),(u16)&ADCConvertedValue,1);
        LCD_ShowString(30,130,200,16,16,"ADC1_CH5_VAL:");             
        LCD_ShowString(30,150,200,16,16,"ADC1_CH5_VOL:0.000V");       
        POINT_COLOR=BLUE;
       
        ADC_SoftwareStartConv(ADC1);                     
        ADC_DMACmd(ADC1,ENABLE);                                                                                                               
        MYDMA_Enable(DMA2_Stream0,1);                                                                                       
        while(1)
        {
                adcx=ADCConvertedValue;
                LCD_ShowxNum(134,130,adcx,4,16,0);   
                temp=(float)adcx*(3.3/4096);         
                adcx=temp;                          
                LCD_ShowxNum(134,150,adcx,1,16,0);   
                temp-=adcx;                          
                temp*=1000;                          
                LCD_ShowxNum(150,150,temp,3,16,0X80);
                LED0=!LED0;
                delay_ms(250);       
                printf("%d\n",adcx);
                delay_ms(2000);
        }
}



小萌新一直头大这个问题,显示屏显示出来就是电压数字值和模拟值都是0,得出的原因是ADCConvertedValue一直为0,为什么DMA不把adc转换过得值复制给ADCConvertedValue???

最佳答案

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

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-4-18
在线时间
32 小时
 楼主| 发表于 2019-4-18 17:20:09 | 显示全部楼层
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-4-18 17:51:52 | 显示全部楼层
可能与DMA设置有关,可以找找论坛这边分享得程序参考下,蛮多这种的资料的
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-4-18
在线时间
32 小时
 楼主| 发表于 2019-4-18 19:32:49 | 显示全部楼层
peng1554 发表于 2019-4-18 17:51
可能与DMA设置有关,可以找找论坛这边分享得程序参考下,蛮多这种的资料的

好的  谢谢
回复

使用道具 举报

10

主题

68

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2016-9-15
在线时间
48 小时
发表于 2019-4-19 15:07:07 | 显示全部楼层
在你Adc_Init()函数里面有没有对DMA进行初始化???
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-4-18
在线时间
32 小时
 楼主| 发表于 2019-4-19 17:49:54 | 显示全部楼层
shichuang 发表于 2019-4-19 15:07
在你Adc_Init()函数里面有没有对DMA进行初始化???

初始化了
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-3-2
在线时间
11 小时
发表于 2019-4-20 15:00:33 | 显示全部楼层
请问楼主怎么解决的,我用的双重模式下,第一个值正常,第二个就为0
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-4-18
在线时间
32 小时
 楼主| 发表于 2019-6-4 16:05:05 | 显示全部楼层
问题很大 发表于 2019-4-20 15:00
请问楼主怎么解决的,我用的双重模式下,第一个值正常,第二个就为0

adc配置为连续转换就好了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 18:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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