OpenEdv-开源电子网

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

F7 ADC+DMA问题

[复制链接]

5

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-1-15
在线时间
22 小时
发表于 2018-10-15 23:15:33 | 显示全部楼层 |阅读模式
1金钱
各位大佬好
目前仿照網上參考代碼寫了一個adc+dma的代碼
可是程序陷在 HAL_ADC_Start_DMA(&adc_handler,ADC_Value_arr,2); 不出来,死在里边了。请大侠指点。


[mw_shl_code=c,true]#include "adc.h"
#include "delay.h"
ADC_HandleTypeDef adc_handler;
ADC_ChannelConfTypeDef channelConfig;
DMA_HandleTypeDef  hdma_adc;

extern uint32_t ADC_Value_arr_buff[2];
uint32_t ADC_Value_arr[2];

void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
        {
                GPIO_InitTypeDef GPIO_Initure;
                __HAL_RCC_GPIOA_CLK_ENABLE();
                __HAL_RCC_ADC1_CLK_ENABLE();
                GPIO_Initure.Pin=GPIO_PIN_4 | GPIO_PIN_6;
                GPIO_Initure.Mode=GPIO_MODE_ANALOG;
                GPIO_Initure.Pull=GPIO_NOPULL;         
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);   
               
                 __HAL_RCC_DMA2_CLK_ENABLE();   
     hdma_adc.Instance=DMA2_Stream0;                        
                 hdma_adc.Init.Channel=DMA_CHANNEL_0;                     
     hdma_adc.Init.Direction=DMA_PERIPH_TO_MEMORY;           
     hdma_adc.Init.PeriphInc=DMA_PINC_DISABLE;               
     hdma_adc.Init.MemInc=DMA_MINC_ENABLE;                     
     hdma_adc.Init.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD;   
     hdma_adc.Init.MemDataAlignment=DMA_MDATAALIGN_HALFWORD;     
     hdma_adc.Init.Mode=DMA_CIRCULAR;//DMA_NORMAL;                  
     hdma_adc.Init.Priority=DMA_PRIORITY_HIGH;               
     hdma_adc.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              
     hdma_adc.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_HALFFULL;      
     hdma_adc.Init.MemBurst=DMA_MBURST_SINGLE;            
     hdma_adc.Init.PeriphBurst=DMA_PBURST_SINGLE;            
     HAL_DMA_DeInit(&hdma_adc);   
     HAL_DMA_Init(&hdma_adc);
   __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc);         
  //__HAL_DMA_ENABLE_IT(&hdma_adc,DMA_IT_TC)  ;
   HAL_NVIC_SetPriority(DMA2_Stream0_IRQn,1,0);
   HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
        }
void MY_ADC1_Init(void)
        {
               
                adc_handler.Instance = ADC1;
                adc_handler.Init.ClockPrescaler =  ADC_CLOCK_SYNC_PCLK_DIV4;
                adc_handler.Init.ContinuousConvMode = ENABLE;
                adc_handler.Init.DataAlign = ADC_DATAALIGN_RIGHT;
                adc_handler.Init.DiscontinuousConvMode = DISABLE;
                adc_handler.Init.DMAContinuousRequests = ENABLE;
                adc_handler.Init.EOCSelection = DISABLE;
                adc_handler.Init.ExternalTrigConv = ADC_SOFTWARE_START;
                adc_handler.Init.NbrOfConversion = 2;
                adc_handler.Init.NbrOfDiscConversion = 0;
                adc_handler.Init.Resolution = ADC_RESOLUTION_12B;
                adc_handler.Init.ScanConvMode = ENABLE;
                HAL_ADC_Init(&adc_handler);
               
                channelConfig.Channel=ADC_CHANNEL_4;
                channelConfig.Rank=1;
                channelConfig.SamplingTime=ADC_SAMPLETIME_56CYCLES;
                channelConfig.Offset=0;
                HAL_ADC_ConfigChannel(&adc_handler, & channelConfig);
               
                channelConfig.Channel=ADC_CHANNEL_6;
                channelConfig.Rank=2;
                channelConfig.SamplingTime=ADC_SAMPLETIME_56CYCLES;
                channelConfig.Offset=0;
                HAL_ADC_ConfigChannel(&adc_handler, & channelConfig);
                HAL_ADC_Start_DMA(&adc_handler,ADC_Value_arr,2);
               
        }        

void  HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
        static u8 i;
        SCB_DisableDCache();
        for(i=0;i<2;i++)
   ADC_Value_arr_buff=ADC_Value_arr;
        SCB_EnableDCache();
        //HAL_ADC_Stop_DMA(&adc_handler);
}
void DMA2_Stream0_IRQHandler(void)
{
  HAL_DMA_IRQHandler(&hdma_adc);
}[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

请参考论坛 http://www.openedv.com/forum.php?mod=viewthread&tid=272018&highlight=ADC%2BDMA
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-11-23
在线时间
10 小时
发表于 2018-10-15 23:15:34 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-10-16 02:07:35 | 显示全部楼层
帮顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 14:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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