adc外部触发教训.docVIP

  • 8
  • 0
  • 约8.53千字
  • 约 6页
  • 2020-03-02 发布于安徽
  • 举报
. word范文 ADC1和ADC2双ADC模式TIM8同时触发。 折腾了3天,各种查询,感谢网上的大侠提供的信息。现总结下我遇到的问题 配置问题:ADC1配置模式选择:ADC_Mode_RegSimult 触发选择:ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO GPIO_PinRemapConfig (GPIO_Remap_ADC1_ETRGREG, ENABLE); /*重要!!通过复用选择触发*/ 就这一句话,我找了一天的原因,汗!! 重点:要使用管脚重映射来选择外部触发信号,原因: 配置TIM8TRGO信号要注意:如果选择了更新模式,同时又开启了预加载,那么此时重复计数器会影响这个信号的输出。 ADC配置程序: ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* ADCCLK = PCLK2/4 */ RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M GPIO_PinRemapConfig (GPIO_Remap_ADC1_ETRGREG, ENABLE); /*重要!!通过复用选择触发*/ /* Enable peripheral clocks ------------------------------------------------*/ /* Enable DMA1 and DMA2 clocks */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2, ENABLE); /* Enable ADC1, ADC2, ADC3 and GPIOC clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 | RCC_APB2Periph_ADC3, ENABLE); /* DMA1 channel1 configuration ----------------------------------------------*/ DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)AdcCh12Buf; //ADC12公用缓冲 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //从外设读 DMA_InitStructure.DMA_BufferSize = AdDataNum; //传送数量 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址加关闭 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //寄存器地址加开启 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //字32位传输 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; //字32位传输 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //单次传输:DMA_Mode_Normal,DMA_Mode_Circular DMA_InitStructure.DMA_Priority = DMA_Priority_High; //高优先级 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非存储器到存储器模式 DMA_Init(DMA1_Channel1,

文档评论(0)

1亿VIP精品文档

相关文档