[技术讨论] 雅特力AT32F403ARCT7的ADC一直卡在校准函数

[复制链接]
 楼主| DOCP 发表于 2021-7-7 11:53 | 显示全部楼层 |阅读模式
本帖最后由 DOCP 于 2021-7-7 11:54 编辑
  1. 请教各位坛友,有没有遇到类似问题,使用的是官网demo程序。

  2. int main(void)
  3. {
  4.         int i;
  5.         /* System clocks configuration */
  6.         RCC_Configuration();

  7.         /* GPIO configuration ------------------------------------------------------*/
  8.         GPIO_Configuration();

  9.         /* DMA1 channel1 configuration ----------------------------------------------*/
  10.         DMA_Reset(DMA1_Channel1);
  11.         DMA_DefaultInitParaConfig(&DMA_InitStructure);
  12.         DMA_InitStructure.DMA_PeripheralBaseAddr    = (uint32_t)&ADC1->RDOR;
  13.         DMA_InitStructure.DMA_MemoryBaseAddr        = (uint32_t)ADC_RegularConvertedValueTab;
  14.         DMA_InitStructure.DMA_Direction             = DMA_DIR_PERIPHERALSRC;
  15.         DMA_InitStructure.DMA_BufferSize            = 3;
  16.         DMA_InitStructure.DMA_PeripheralInc         = DMA_PERIPHERALINC_DISABLE;
  17.         DMA_InitStructure.DMA_MemoryInc             = DMA_MEMORYINC_ENABLE;
  18.         DMA_InitStructure.DMA_PeripheralDataWidth   = DMA_PERIPHERALDATAWIDTH_HALFWORD;
  19.         DMA_InitStructure.DMA_MemoryDataWidth       = DMA_MEMORYDATAWIDTH_HALFWORD;
  20.         DMA_InitStructure.DMA_Mode                  = DMA_MODE_CIRCULAR;
  21.         DMA_InitStructure.DMA_Priority              = DMA_PRIORITY_HIGH;
  22.         DMA_InitStructure.DMA_MTOM                  = DMA_MEMTOMEM_DISABLE;
  23.         DMA_Init(DMA1_Channel1, &DMA_InitStructure);
  24.         /* Enable DMA1 channel1 */
  25.         DMA_ChannelEnable(DMA1_Channel1, ENABLE);

  26.         /* ADC1 configuration ------------------------------------------------------*/
  27.         ADC_StructInit(&ADC_InitStructure);
  28.         ADC_InitStructure.ADC_Mode              = ADC_Mode_Independent;
  29.         ADC_InitStructure.ADC_ScanMode          = ENABLE;
  30.         ADC_InitStructure.ADC_ContinuousMode    = ENABLE;
  31.         ADC_InitStructure.ADC_ExternalTrig      = ADC_ExternalTrig_None;
  32.         ADC_InitStructure.ADC_DataAlign         = ADC_DataAlign_Right;
  33.         ADC_InitStructure.ADC_NumOfChannel      = 3;
  34.         ADC_Init(ADC1, &ADC_InitStructure);
  35.         
  36.         /* ADC1 regular channels configuration */
  37.         ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_28_5);
  38.   ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 2, ADC_SampleTime_28_5);
  39.   ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 3, ADC_SampleTime_28_5);
  40.         ADC_ExternalTrigConvCtrl(ADC1, ENABLE);
  41.         /* Enable ADC1 DMA */
  42.         ADC_DMACtrl(ADC1, ENABLE);
  43.         
  44.         /* Enable ADC1 */
  45.         ADC_Ctrl(ADC1, ENABLE);

  46.         /* Enable ADC1 reset calibration register */   
  47.         ADC_RstCalibration(ADC1);
  48.         /* Check the end of ADC1 reset calibration register */
  49.         while(ADC_GetResetCalibrationStatus(ADC1));

  50.         /* Start ADC1 calibration */
  51.         ADC_StartCalibration(ADC1);
  52.         
  53.         /* Check the end of ADC1 calibration */
  54.         while(ADC_GetCalibrationStatus(ADC1));

  55.         /* Start ADC1 Software Conversion */
  56.         ADC_SoftwareStartConvCtrl(ADC1, ENABLE);

  57.         while (1)
  58.         {
  59.         }
  60. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

18

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部