新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2020-1-2
- 在线时间
- 6 小时
|
adc配置:
void MY_ADC_Init(void)
{
ADC_ChannelConfTypeDef ADC1_ChanConf;
ADC1_Handler.Instance = ADC1;
ADC1_Handler.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; //2·ÖÆ죬ADCCLK=SYSCLK/2=80/2=40MHZ
ADC1_Handler.Init.Resolution = ADC_RESOLUTION_12B; //12λÄ£ê½
ADC1_Handler.Init.DataAlign = ADC_DATAALIGN_RIGHT; //óò¶ÔÆë
ADC1_Handler.Init.ScanConvMode = ADC_SCAN_ENABLE; //·Çé¨ÃèÄ£ê½
ADC1_Handler.Init.EOCSelection = DISABLE; //1رÕEOCÖD¶Ï
ADC1_Handler.Init.ContinuousConvMode = ENABLE; //1رÕá¬Dø×a»»
ADC1_Handler.Init.DiscontinuousConvMode = DISABLE; //½ûÖ12»á¬Dø2éÑùÄ£ê½
ADC1_Handler.Init.NbrOfConversion = 2; //1¸ö×a»»Ôú1æÔòDòáDÖD ò2¾íêÇÖ»×a»»1æÔòDòáD1
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.LowPowerAutoWait = DISABLE;
ADC1_Handler.Init.DMAContinuousRequests = ENABLE;
ADC1_Handler.Init.Overrun = ADC_OVR_DATA_PRESERVED;
ADC1_Handler.Init.OversamplingMode = DISABLE;
ADC1_ChanConf.Channel = ADC_CHANNEL_1; //ch //í¨μà
ADC1_ChanConf.Rank = ADC_REGULAR_RANK_1; //μú1¸öDòáD£¬DòáD1
ADC1_ChanConf.SamplingTime = ADC_SAMPLETIME_47CYCLES_5; //2éÑùê±¼ä
ADC1_ChanConf.SingleDiff = ADC_SINGLE_ENDED; //ADC쥶Ëêäèë
ADC1_ChanConf.OffsetNumber = ADC_OFFSET_NONE; //Æ«òÆoÅÑ¡Ôñ
ADC1_ChanConf.Offset = 0;
HAL_ADC_ConfigChannel(&ADC1_Handler, &ADC1_ChanConf); //í¨μàÅäÖÃ
ADC1_ChanConf.Channel = ADC_CHANNEL_2; //ch //í¨μà
ADC1_ChanConf.Rank = ADC_REGULAR_RANK_2; //μú1¸öDòáD£¬DòáD1
ADC1_ChanConf.SamplingTime = ADC_SAMPLETIME_47CYCLES_5; //2éÑùê±¼ä
ADC1_ChanConf.SingleDiff = ADC_SINGLE_ENDED; //ADC쥶Ëêäèë
ADC1_ChanConf.OffsetNumber = ADC_OFFSET_NONE; //Æ«òÆoÅÑ¡Ôñ
ADC1_ChanConf.Offset = 0;
ADC1_Handler.Init.DMAContinuousRequests = ENABLE; //′ò¿aDMAÇëÇó
HAL_ADC_Init(&ADC1_Handler); //3õê¼»ˉ
HAL_ADC_Start(&ADC1_Handler);
}
DMA配置
void MYDMA_Config(DMA_Channel_TypeDef *DMA_Channel, u32 seq)//
{
__HAL_RCC_DMA1_CLK_ENABLE();//DMA1ê±Öóê1Äü
//ADC1 DMAÅäÖÃ
//
ADC1DMA_Handler.Instance = DMA1_Channel1; //í¨μàÑ¡Ôñ
ADC1DMA_Handler.Init.Request = seq; //ÇëÇóÑ¡Ôñ
ADC1DMA_Handler.Init.Direction = DMA_PERIPH_TO_MEMORY; //íaéèμ½′æ′¢Æ÷
ADC1DMA_Handler.Init.PeriphInc = DMA_PINC_DISABLE; //íaéè·ÇÔöá¿Ä£ê½
ADC1DMA_Handler.Init.MemInc = DMA_MINC_ENABLE; //′æ′¢Æ÷Ôöá¿Ä£ê½
ADC1DMA_Handler.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; //íaéèêy¾Y3¤¶è:32λ
ADC1DMA_Handler.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; //′æ′¢Æ÷êy¾Y3¤¶è:32λ
ADC1DMA_Handler.Init.Mode = DMA_CIRCULAR; //íaéèÑ-»·Ä£ê½
ADC1DMA_Handler.Init.Priority = DMA_PRIORITY_HIGH; // //¸ßóÅÏ輶
HAL_DMA_Init(&ADC1DMA_Handler);
HAL_DMA_DeInit(&ADC1DMA_Handler);
__HAL_LINKDMA(&ADC1_Handler, DMA_Handle, ADC1DMA_Handler); //½«DMAóëADC1áaÏμÆeà′(·¢ËíDMA)
}
main中调用
HAL_ADC_Start_DMA(&ADC1_Handler, (uint32_t*)&AD_DMA, 2);
但AD_DMA中的数为0,不知道哪里出问题了,求大神帮忙看下
|
|