今天用到的是沁恒微电子的CH32V307VCT6开发板,来实现用中断的方法实现录音喊话器的ADC单通道采集。
针对用中断的方法实现录音喊话器的ADC单通道采集实验,我们需要使用到的是ADC的外设,那么我们通常需要对ADC进行一系列的配置,主要包括配置ADC的采集通道(16个外部通道和2个内部通道)、配置ADC时钟(由APB2分频得到,最大14MHz)、配置ADC工作参数、设置ADC转换通道顺序以及采样时间、配置ADC转换完成中断、使能ADC和使能软件触发ADC转换一系列配置。
为了模拟一个ADC信号,我们通常采用一个分压电阻,通过调整分压电阻的阻值,即一个变化的电压量,来为ADC进行采集。接入一个分压电阻如下图所示:

下面通过代码来演示如何对ADC进行配置:


以下是实现代码:
/**********************************(C) COPYRIGHT *******************************
* File Name : main.c
* Author : WCH
* Version : V1.0.0
* Date : 2021/06/06
* Description : Main program body.
* Copyright (c) 2021 NanjingQinhengMicroelectronicsCo., Ltd.
* SPDX-License-Identifier: Apache-2.0
*******************************************************************************/
/*
*@Note
串口打印调试例程:
USART1_Tx(PA9)。
本例程演示使用 USART1(PA9) 作打印调试口输出。
*/
#include "debug.h"
/* Global typedef */
/* Global define */
/* Global Variable */
volatile uint16_t adc_data = 0;
voidadc_init(void)
{
/*ADC 通道1 引脚初始化*/
GPIO_InitTypeDef GPIO_InitStructure={0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*ADC1 模块初始化*/
ADC_InitTypeDef ADC_InitStructure={0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);