OpenEdv-开源电子网

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

STM32H7 ADC使用DMA, HAL_ADC_Start_DMA()没有结果

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2019-4-7
在线时间
5 小时
发表于 2019-4-28 13:54:54 | 显示全部楼层 |阅读模式
10金钱
各位好:
       STM32H743; HAL库; ADC; DMA;
       我在使用ADC时,采用DMA的方式,但是通过单步调试,HAL_ADC_Start_DMA()函数的目标地址里一直没有值。ADC/DMA设置如下: 整个工程在附件;
       期待各位的回答;
       谢谢!

       [mw_shl_code=applescript,true]ADC1_Handler.Instance                =                ADC1;
    ADC1_Handler.Init.ClockPrescaler                =                ADC_CLOCK_SYNC_PCLK_DIV4;         //4·ÖÆμ£¬ADCCLK=PER_CK/4=64/4=16MHZ
    ADC1_Handler.Init.Resolution                                =                ADC_RESOLUTION_12B;                   //16λÄ£ê½
    ADC1_Handler.Init.ScanConvMode                        =                ENABLE;                            //·Çé¨ÃèÄ£ê½
    ADC1_Handler.Init.EOCSelection                        =                ADC_EOC_SINGLE_CONV;               //1رÕEOCÖD¶Ï
                ADC1_Handler.Init.LowPowerAutoWait        =                DISABLE;                                        //×Ô¶ˉμí1|oÄ1رՠ                              
    ADC1_Handler.Init.ContinuousConvMode=                ENABLE;               //1رÕá¬Dø×a»»
    ADC1_Handler.Init.NbrOfConversion                =                1;                        //1¸ö×a»»Ôú1æÔòDòáDÖD ò2¾íêÇÖ»×a»»1æÔòDòáD1
    ADC1_Handler.Init.DiscontinuousConvMode                =                DISABLE;            //½ûÖ12»á¬Dø2éÑùÄ£ê½
    ADC1_Handler.Init.NbrOfDiscConversion                        =                0;                    //2»á¬Dø2éÑùí¨μàêyÎa0
    ADC1_Handler.Init.ExternalTrigConv                                =                ADC_SOFTWARE_START;      //èí¼t′¥·¢
    ADC1_Handler.Init.ExternalTrigConvEdge                =                ADC_EXTERNALTRIGCONVEDGE_NONE;//ê1óÃèí¼t′¥·¢
                ADC1_Handler.Init.BoostMode                                                                =                ENABLE;                                                        //BOOTÄ£ê½1رÕ
                ADC1_Handler.Init.Overrun                                                =                ADC_OVR_DATA_OVERWRITTEN;                        //óDDÂμÄêy¾YμÄËàoóÖ±½ó¸2¸Çμô¾éêy¾Y
                ADC1_Handler.Init.OversamplingMode        =                DISABLE;                                        //1y2éÑù1رÕ
                ADC1_Handler.Init.ConversionDataManagement        =                ADC_CONVERSIONDATA_DR;  //1æÔòí¨μàμÄêy¾Y½ö½ö±£′æÔúDR¼Ä′æÆ÷àïÃæ
    HAL_ADC_Init(&ADC1_Handler);                                 //3õê¼»ˉ
       
                HAL_ADCEx_Calibration_Start(&ADC1_Handler,ADC_CALIB_OFFSET,ADC_SINGLE_ENDED); //ADCD£×¼
       
          ADC1_ChanConf.Channel                                =                ADC_CHANNEL_19;                          //í¨μà
    ADC1_ChanConf.Rank                                        =                ADC_REGULAR_RANK_1;          //1¸öDòáD
    ADC1_ChanConf.SamplingTime        =                ADC_SAMPLETIME_64CYCLES_5; //2éÑùê±¼ä      
          ADC1_ChanConf.SingleDiff                =                ADC_SINGLE_ENDED;                                   //μ¥±ß2é¼ˉ                         
                ADC1_ChanConf.OffsetNumber        =                ADC_OFFSET_NONE;                    
                ADC1_ChanConf.Offset                                =                0;   
    HAL_ADC_ConfigChannel(&ADC1_Handler,&ADC1_ChanConf);        //í¨μàÅäÖÃ[/mw_shl_code][mw_shl_code=applescript,true]UART1TxDMA_Handler.Instance                                =                DMA_Streamx;                            //êy¾Yá÷Ñ¡Ôñ
          UART1TxDMA_Handler.Init.Request                =                DMA_REQUEST_ADC1;                                      //USART1·¢ËíDMA
    UART1TxDMA_Handler.Init.Direction        =                DMA_PERIPH_TO_MEMORY;             //′æ′¢Æ÷μ½íaéè
    UART1TxDMA_Handler.Init.PeriphInc        =                DMA_PINC_DISABLE;                 //íaéè·ÇÔöá¿Ä£ê½
    UART1TxDMA_Handler.Init.MemInc                =                DMA_MINC_ENABLE;                     //′æ′¢Æ÷Ôöá¿Ä£ê½
    UART1TxDMA_Handler.Init.PeriphDataAlignment                =                DMA_PDATAALIGN_HALFWORD;    //íaéèêy¾Y3¤¶è:8λ
    UART1TxDMA_Handler.Init.MemDataAlignment                        =                DMA_PDATAALIGN_HALFWORD;       //′æ′¢Æ÷êy¾Y3¤¶è:8λ
    UART1TxDMA_Handler.Init.Mode                        =                DMA_CIRCULAR;                            //íaéèá÷¿ØÄ£ê½
    UART1TxDMA_Handler.Init.Priority        =                DMA_PRIORITY_HIGH;               //ÖDμèóÅÏè¼¶
    UART1TxDMA_Handler.Init.FIFOMode        =                DMA_FIFOMODE_DISABLE;              
    UART1TxDMA_Handler.Init.FIFOThreshold                =                DMA_FIFO_THRESHOLD_FULL;      
    UART1TxDMA_Handler.Init.MemBurst                                =                DMA_MBURST_SINGLE;                 //′æ′¢Æ÷í»·¢μ¥′Î′«êä
    UART1TxDMA_Handler.Init.PeriphBurst                        =                DMA_PBURST_SINGLE;              //íaéèí»·¢μ¥′Î′«êä
       
    HAL_DMA_DeInit(&UART1TxDMA_Handler);   
    HAL_DMA_Init(&UART1TxDMA_Handler);
        
    __HAL_LINKDMA(&ADC1_Handler,DMA_Handle,UART1TxDMA_Handler);    //½«DMAóëUSART1áaÏμÆeà′(·¢ËíDMA)[/mw_shl_code]


实验20 ADC实验 - 副本 (2).rar

1.46 MB, 下载次数: 186

最佳答案

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

找到原因了: 目标缓存地址 没有对其,使用语句: ALIGN_32BYTES (volatile uint16_t ADC_Cov[ADC_CONVERTED_DATA_BUFFER_SIZE]);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2019-4-7
在线时间
5 小时
 楼主| 发表于 2019-4-28 13:54:55 | 显示全部楼层
找到原因了: 目标缓存地址 没有对其,使用语句:
ALIGN_32BYTES (volatile uint16_t   ADC_Cov[ADC_CONVERTED_DATA_BUFFER_SIZE]);
回复

使用道具 举报

1

主题

18

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-7-28
在线时间
8 小时
发表于 2019-9-8 18:09:56 | 显示全部楼层
源码不对吧
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-12-11 12:15:57 | 显示全部楼层
youngg 发表于 2019-4-28 13:54
找到原因了: 目标缓存地址 没有对其,使用语句:
ALIGN_32BYTES (volatile uint16_t   ADC_Cov[ADC_CONVE ...

老铁,可否分享一个修改好的版本看看
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 22:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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