GD32配置ADC触发源为TRGO
时间: 2024-06-18 10:03:56 浏览: 364
在GD32微控制器中,ADC的触发方式有多种,其中一种是使用定时器触发,可以使用定时器的TRGO信号触发ADC。具体的配置步骤如下:
1. 配置定时器,使其产生TRGO信号。可以选择定时器的输出比较模式或者PWM模式,并将TRGO输出使能。
2. 配置ADC的触发源为定时器触发。可以选择软件触发或者硬件触发,这里选择硬件触发。
3. 配置ADC触发源为定时器TRGO信号。
以下是具体代码实现:
```c
// 定时器配置
// 以TIM2为例
// 配置为PWM模式
TIM_TimeBaseInitPara timer_init_struct;
timer_init_struct.TIM_Period = 999; // 定时器周期
timer_init_struct.TIM_Prescaler = 71; // 定时器分频系数
timer_init_struct.TIM_ClockDivision = TIM_CKD_DIV1;
timer_init_struct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &timer_init_struct);
// PWM模式配置
TIM_OCInitPara oc_init_struct;
oc_init_struct.TIM_OCMode = TIM_OCMode_PWM1;
oc_init_struct.TIM_OutputState = TIM_OutputState_Enable;
oc_init_struct.TIM_Pulse = 499; // 占空比50%
oc_init_struct.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM2, &oc_init_struct);
// TRGO输出使能
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);
// ADC配置
// 触发源为定时器TRGO
ADC_CommonInitPara adc_common_init_struct;
adc_common_init_struct.ADC_Mode = ADC_Mode_Independent;
adc_common_init_struct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
adc_common_init_struct.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
adc_common_init_struct.ADC_Prescaler = ADC_Prescaler_Div4;
ADC_CommonInit(&adc_common_init_struct);
ADC_InitPara adc_init_struct;
adc_init_struct.ADC_Resolution = ADC_Resolution_12b;
adc_init_struct.ADC_ScanConvMode = DISABLE;
adc_init_struct.ADC_ContinuousConvMode = ENABLE;
adc_init_struct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;
adc_init_struct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_TRGO; // 触发源为T2_TRGO
adc_init_struct.ADC_DataAlign = ADC_DataAlign_Right;
adc_init_struct.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &adc_init_struct);
// 通道配置
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_15Cycles);
// 开始转换
ADC_Cmd(ADC1, ENABLE);
```
阅读全文