- void adc_config(void)
- {
- /* ADC contineous function enable */
- adc_special_function_config(ADC_CONTINUOUS_MODE, ENABLE);
- /* ADC trigger config */
- adc_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_NONE);
- /* ADC data alignment config */
- adc_data_alignment_config(ADC_DATAALIGN_RIGHT);
- /* ADC channel length config */
- adc_channel_length_config(ADC_REGULAR_CHANNEL, 1U);
- /* ADC regular channel config */
- adc_regular_channel_config(0U, BOARD_ADC_CHANNEL, ADC_SAMPLETIME_55POINT5);
- adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE);
- /* enable ADC interface */
- adc_enable();
- delay_1ms(1U);
- /* ADC calibration and reset calibration */
- adc_calibration_enable();
- /* ADC DMA function enable */
- adc_dma_mode_enable();
- /* ADC software trigger enable */
- adc_software_trigger_enable(ADC_REGULAR_CHANNEL);
- }
GD的ADC配置 - void dma_config(void)
- {
- /* ADC_DMA_channel configuration */
- dma_parameter_struct dma_data_parameter;
- /* ADC DMA_channel configuration */
- dma_deinit(DMA_CH0);
- /* initialize DMA single data mode */
- dma_data_parameter.periph_addr = (uint32_t)(&ADC_RDATA);
- 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_DISABLE;
- dma_data_parameter.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;
- dma_data_parameter.memory_width = DMA_MEMORY_WIDTH_16BIT;
- dma_data_parameter.direction = DMA_PERIPHERAL_TO_MEMORY;
- dma_data_parameter.number = 1U;
- dma_data_parameter.priority = DMA_PRIORITY_HIGH;
- dma_init(DMA_CH0, &dma_data_parameter);
- dma_circulation_enable(DMA_CH0);
- /* enable DMA channel */
- dma_channel_enable(DMA_CH0);
- }
ADC采集走DMA通道0 注意uint16_t adc_value;需要定义。 if(adc_value>10)
{
gpio_bit_set(GPIOA,GPIO_PIN_8);
}
else {
gpio_bit_reset(GPIOA,GPIO_PIN_8);
}
判断ADC的数值,大于100就点亮LED,否则就灭。
|