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电池试了一下和万用表测出来相差不大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值