本文简单介绍了STM32F103C8,通过中断方式读取电压,不过最后楼主读取参考电压失败,还没有找到错误,所以读取的电压只能十六进制显示,如有不便请忽略本文!
本文的介绍按照一般流程来走:
1,串口的初始化
2,ADC初始化
3,中断初始化
4,编写中断函数
5,编写主函数
接下来详细介绍:
1,串口的初始化:
void usart_init()
{
GPIO_InitTypeDef Uart_A;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);
Uart_A.GPIO_Pin = GPIO_Pin_9;
Uart_A.GPIO_Speed = GPIO_Speed_50MHz;
Uart_A.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&Uart_A);
Uart_A.GPIO_Pin = GPIO_Pin_10;
Uart_A.GPIO_Speed = GPIO_Speed_50MHz;
Uart_A.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&Uart_A);
USART_InitTypeDef Uart;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
Uart.USART_BaudRate = 115200;
Uart.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
Uart.USART_Mode = USART_Mode_Tx;
Uart.USART_Parity = USART_Parity_No;
Uart.USART_StopBits = USART_StopBits_1;
Uart.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1,&Uart);
USART_Cmd(USART1,ENABLE);
USART_ClearFlag(USART1,USART_FLAG_TC);
}
关于本段代码,我前面写的文章STM32基础设计(3)有详细讲解,此处不再赘述。
2,ADC初始化
typedef struct
{//配置ADC的模式,一个ADC是独立模式,2个是双模式
uint32_t ADC_Mode; /*!< Configures the ADC to operate in independent or
dual mode.
This parameter can be a value of @ref ADC_mode */
//配置ADC是否使用扫描,单通道不扫描,多通道扫描
FunctionalState ADC_ScanConvMode; /*!< Specifies whether the conversion is performed in
Scan (multichannels) or Single (one channel) mode.
This parameter can be set to ENABLE or DISABLE */
//配置ADC是单次转换还是连续转换
FunctionalState ADC_ContinuousConvMode; /*!< Specifies whether the conversion is performed in
Continuous or Single mode.
This parameter can be set to ENABLE or DISABLE. */
//外部触发选择
uint32_t ADC_ExternalTrigConv; /*!< Defines the external trigger used to start the analog
to digital conversion of regular channels. This parameter
can be a value of @ref ADC_external_trigger_sources_for_regular_channels_conversion */
//转换结果数据对其方式
uint32_t ADC_DataAlign; /*!< Specifies whether the ADC data alignment is left or right.
This parameter can be a value of @ref ADC_data_align */
//ADC转换的通道数目
uint8_t ADC_NbrOfChannel; /*!< Specifies the number of ADC channels that will be converted