问答

汇集网友智慧,解决技术难题

可可太幼稚

TA的家园币:12  

  • GD32F103RET AD规则同步模式遇到了奇葩问题,求指教。

    本人使用GD32F103RETAD规则同步模式采样两路电流值,配置ADC1为外部触发,ADC0为软件触发。为什么外部触发和软件触发需要配置两遍才能生效?代码如下,最后四行为ADC1的触发源配置和ADC0的软件触发使能,需要相同的代码写两遍。如果只写一遍,功能不可用,有没有哪位大神能解释一下?万分感谢voidADC_init(void){rcu_periph_clock_enable(RCU_GPIOC);rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_DMA0);rcu_periph_clock_enable(RCU_ADC0);rcu_periph_clock_enable(RCU_ADC1);rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV8);//72M9Mgpio_init(GPIOC,GPIO_MODE_AIN,GPIO_OSPEED_50MHZ,GPIO_PIN_2|GPIO_PIN_3);gpio_init(GPIOA,GPIO_MODE_AIN,GPIO_OSPEED_50MHZ,GPIO_PIN_3);dma_parameter_structdma_data_parameter;dma_deinit(DMA0,DMA_CH0);dma_data_parameter.periph_addr=(uint32_t)(&ADC_RDATA(ADC0));dma_data_parameter.periph_inc=DMA_PERIPH_INCREASE_DISABLE;dma_data_parameter.memory_addr=(uint32_t)(adc_value);dma_data_parameter.memory_inc=DMA_MEMORY_INCREASE_ENABLE;dma_data_parameter.periph_width=DMA_PERIPHERAL_WIDTH_32BIT;dma_data_parameter.memory_width=DMA_MEMORY_WIDTH_32BIT;dma_data_parameter.direction=DMA_PERIPHERAL_TO_MEMORY;dma_data_parameter.number=2;dma_data_parameter.priority=DMA_PRIORITY_HIGH;dma_init(DMA0,DMA_CH0,&dma_data_parameter);dma_circulation_enable(DMA0,DMA_CH0);dma_channel_enable(DMA0,DMA_CH0);adc_special_function_config(ADC0,ADC_SCAN_MODE,ENABLE);adc_special_function_config(ADC0,ADC_CONTINUOUS_MODE,ENABLE);adc_external_trigger_source_config(ADC0,ADC_REGULAR_CHANNEL,ADC0_1_2_EXTTRIG_REGULAR_NONE);adc_data_alignment_config(ADC0,ADC_DATAALIGN_RIGHT);adc_channel_length_config(ADC0,ADC_REGULAR_CHANNEL

    DMA ig dc ADC gd32F103 AD

    2023-09-12 2