当前位置: 首页 > article >正文

STM32F103RCT6学习之五:ADC

1.ADC基础

  • ADC(Analog-Digital Converter)模拟-数字转换器
  • ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
  • 12位逐次逼近型ADC,1us转换时间 输入电压范围:0~3.3V,转换结果范围:0~4095
  • 18个输入通道,可测量16个外部和2个内部信号源
  • 规则组和注入组两个转换单元
  • 模拟看门狗自动监测输入电压范围
  • STM32F103RCT6 ADC资源:ADC1、ADC2,ADC3

 ADC数据对齐:

数据右对齐数据左对齐

2.查询方式测量电压

1)进行基本配置

2)编辑代码

除了与串口有关的外,代码主要是在main函数中,主要涉及ADC的转换流程:启动--》等待转换完成--》读取传话数值

int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  /* USER CODE BEGIN 2 */
  HAL_ADCEx_Calibration_Start(&hadc1);    //对 ADC 进行校准,确保采样准确性
	uint16_t ADC_Value;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
		HAL_ADC_Start(&hadc1);     //开启ADC转换
	
		if (HAL_ADC_PollForConversion(&hadc1, 50) == HAL_OK) {  //等待 ADC 转换完成,超时时间为 50ms
			if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) // 检查ADC是否转换完成  EOC = End Of Conversion,转换完成标志位
			{
				ADC_Value = HAL_ADC_GetValue(&hadc1);   //获取ADC采样值
				printf("ADC1 Reading : %d \r\n",ADC_Value);  //输出ADC采样值
				printf("PA1 True Voltage value : %.2fV \r\n",ADC_Value*3.3f/4096);  //根据参考电压,计算并输出采集电压 3.3f表示浮点计算
			}
		}
		HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

3)分析

 


http://www.kler.cn/a/456179.html

相关文章:

  • Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)
  • Github - 如何提交一个带有“verified”标识的commit
  • 【Java】面试题 并发安全 (2)
  • PANet:路径聚合网络——实例分割的创新之路
  • Ribbon
  • Windows配置cuda,并安装配置Pytorch-GPU版本
  • Element Plus 日期时间选择器大于当天时间置灰
  • QT应用单例——qtsingleapplication
  • 设计模式之模板方法模式:咖啡,茶,和代码
  • 经典问题——华测
  • OpenCV相机标定与3D重建(37)计算两幅图像之间单应性矩阵(Homography Matrix)的函数findHomography()的使用
  • 【Unity3D】ECS入门学习(十一)ComponentSystem、JobComponentSystem
  • information_schema是什么?
  • Python小括号( )、中括号[ ]和大括号{}代表什么
  • 仓颉语言实战——2.名字、作用域、变量、修饰符
  • 在C#中实现事件的订阅和解除订阅
  • C++ OCR 文字识别
  • Redis——数据淘汰策略
  • 关于启动vue项目,出现:Error [ERR_MODULE_NOT_FOUND]: Cannot find module ‘xxx‘此类错误
  • Java与SQL Server数据库连接的实践与要点
  • web服务器之云主机、物理机租用、服务器托管的区别
  • sql server index
  • SQL 实战:字符串处理函数 – 数据清洗与文本格式化
  • CSS系列(41)-- Logical Properties详解
  • 数据结构课程设计/校园导游程序及通信线路设计 #3
  • 银河麒麟操作系统安装达梦数据库(超详细)