STM32F103C8T6 + ADC实验
一、STM32CubeMX配置
1.打开软件开始创建工程
2.选择芯片型号
3.ADC1配置如下
4.RCC 外部高速晶振(8MHz)
5.SYS
6.GPIO
7.时钟部分
8.Project Manager > Project
二、代码
// main.c
// --------------第一处-------------------
/* USER CODE BEGIN 0 */
int ADCData;
uint16_t VolDta;
/* USER CODE END 0 */
// --------------第二处-------------------
/* USER CODE BEGIN 2 */
if(HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)//启动校准
{
Error_Handler();
}
HAL_ADC_Start(&hadc1);//启动ADC
/* USER CODE END 2 */
// --------------第三处-------------------
while (1)
{
/* USER CODE END WHILE */
ADCData=HAL_ADC_GetValue(&hadc1);//获取ADC采集值
VolDta=ADCData*3300/4095;//ADC采集值转换成电压值,单位mV
HAL_Delay(200);//等待200ms
HAL_ADC_Start(&hadc1);//再次启动ADC
HAL_Delay(200);
/* USER CODE BEGIN 3 */
}
再把前面的串口调试给加上,略微修改一下代码
//-----------------------------------------------
#include <stdio.h>
//-------------------这个改大一点------------------
uint8_t aTxBuffer[32];
//-----------------------------------------------
while (1)
{
/* USER CODE END WHILE */
ADCData=HAL_ADC_GetValue(&hadc1);//获取ADC采集值
VolDta=ADCData*3300/4095;//ADC采集值转换成电压值,单位mV
HAL_Delay(200);//等待200ms
HAL_ADC_Start(&hadc1);//再次启动ADC
HAL_Delay(200);
sprintf((char *)aTxBuffer, "%d mV\r\n", VolDta);
HAL_UART_Transmit(&huart1, (uint8_t *)aTxBuffer, TXBUFFERSIZE,1000);//发送Helloworld 10字节
/* USER CODE BEGIN 3 */
}
PA4引脚采样,接GND输出为0mV,接3V3输出为3300mV,找了个1.5v电池试了一下和万用表测出来相差不大