从上图结果可知,不同按键按下,ADC会采集到不到的电压,通过该原理,可以利用ADC实现对按键的检测,具体实现代码可参考下程序: voidadc_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1 , ENABLE );//使能...
1) 开启PA 口和 ADC1 时钟,设置PA1 为模拟输入。 STM32F103RCT6 的 ADC1 通道 1 在 PA1 上,所以,我们先要使能 PORTA 的时钟,然后设置 PA1 为模拟输入。使能 GPIOA 和 ADC 时钟用RCC_APB2PeriphClockCmd函数,设置 PA1 的输入方式,使用 GPIO_Init 函数即可。下面为 STM32 的 ADC 通道与 GPIO 对应表: ...
gpio_init(ADC_CH[i].port, GPIO_MODE_AIN, ADC_CH[i].gpio_speed, ADC_CH[i].pin); } else { adc_tempsensor_vrefint_enable(); } } 被用作ADC采样的IO口需要被设置为Analog模式,因为ADC_CH0~ADC_CH15是和外部IO关联的,而ADC_CH16和ADC_CH17是内部通道,所以只有在通道号小于ADC_CHANNEL_16时...
void ADC_GPIO_Config(void); voidADCx_Init(void); #endif /* __ADC_H */ 引脚配置函数 首先配置相应的GPIO引脚,毕竟模拟信号是通过GPIO引脚传输到开发板的,注意的是,引脚的模式一定要是模拟输入! void ADC_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(ADC_GPIO_RCC,...
void ADC_GPIO_INIT(void) { SET_BIT(RCC->APB2ENR,RCC_APB2ENR_IOPCEN);//开GPIOC端口时钟 GPIOC->CRL &= ~(0xf<<4);//模拟输入模式 PC1 } 1. 2. 3. 4. 5. ADC采样与中断配置 本次实验使用中断进行对ADC的连续采样操作,采样使用规则通道。配置ADC CR2寄存器的EOCIE位,在转换完成后产生中断...
gd32_adc_gpio_init(adc->adc_clk, adc->adc_pins[channel]); adc_channel_length_config(adc_periph, ADC_ROUTINE_CHANNEL, 1); adc_data_alignment_config(adc_periph, ADC_DATAALIGN_RIGHT); #if defined SOC_SERIES_GD32F4xx adc_external_trigger_source_config(adc_periph, ADC_ROUTINE_CHANNEL, ADC...
ADC_Init(ADC1, &adc_init);// 配置通道0作为输入信号 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);```2. 配置GPIO模块 然后,需要打开对应的GPIO时钟,以及设置GPIO的输入/输出模式、输出类型、速度等参数。注意,要将输入模式设置为模拟输入模式。具体代码如下:...
voidAdcGpioInit(void){rcu_periph_clock_enable(RCU_GPIOA);gpio_mode_set(GPIOA,GPIO_MODE_ANALOG,GPIO_PUPD_NONE,GPIO_PIN_1);} (2)ADC初始化 代码语言:javascript 复制 voidAdcConfig(void){/* enable ADC clock */rcu_periph_clock_enable(RCU_ADC);/* config ADC clock */rcu_adc_clock_config(...
GPIO_Init(GPIO_ADC1,&GPIO_InitStructure); ADC_InitStructure.ADC_Mode= ADC_Mode_Independent;//ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode = ENABLE;//工作在扫描模式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//转换工作在连续模式 ...
(&adc_periphclk_init_struct); adc_gpio_init(); /* GPIO初始化 */ g_adc_handle.Instance = ADC_ADCX; /* 输入时钟2分频,即adc_ker_ck= PER/2=32MHz */ g_adc_handle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; /* ADC分辨率为16位模式 */ g_adc_handle.Init.Resolution = ADC_...