[STM32F103C8T6]ADC转换

这篇具有很好参考价值的文章主要介绍了[STM32F103C8T6]ADC转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是ADC转换?

ADC转换的全称是:Analog-to-Digital Converter,指模拟/数字转换器

[STM32F103C8T6]ADC转换

ADC的性能指标:

[STM32F103C8T6]ADC转换

[STM32F103C8T6]ADC转换

ADC分辨率:

SSA与VREF-一起接到地,DDA与VREF+接到3.3v,所以ADC转换的范围是0---3.3v

所以最后的ADC转换值应该是我们的测量值*分辨率   

分辨率 = 3.3v/2^12 = (3.3/4096)   12位的转换器所以是2的12次方为最小刻度

ADC通道:

[STM32F103C8T6]ADC转换

[STM32F103C8T6]ADC转换 什么叫注入通道?什么叫规则通道?

 我的理解是:注入通道是有特权的通道,可以优先转换,而规则通道是没有特权的通道只能按顺序转换(类似于买票排队,注入通道就类似于老弱病残孕军人之类的,享有优先特权,而规则通道就是普通的排队通道必须排队通过)

ADC转换顺序

[STM32F103C8T6]ADC转换

[STM32F103C8T6]ADC转换

 [STM32F103C8T6]ADC转换

[STM32F103C8T6]ADC转换

 注入通道的顺序不是指定的,而是4-JL,如果JL=1,就是从第三个通道开始,如果JL=4才会按照JSQ1,JSQ2,JSQ3,JSQ4的顺序

ADC的触发方式

[STM32F103C8T6]ADC转换

ADC转换时间

[STM32F103C8T6]ADC转换

ADC转换模式

[STM32F103C8T6]ADC转换

 打开扫描模式是扫描被选中的SQR的所有通道

 关闭扫描模式则只扫描被选中的SQR的第一个通道

单次转换是指只扫描一次从第一个到最后一个通道,扫描结束后停止扫描,连续转换是指从第一个通道扫描到最后一个通道再重头扫描

用ADC转换读取烟雾报警器的值

[STM32F103C8T6]ADC转换

通过查看产品手册,确定了烟雾报警器的接线AO模拟输出口接在PA0上 

 因为ADC是挂在PCLK2上经过分频最大为14MHZ,在cubeMX上RCC我们配置的时钟数上,PCLK2为最大72MHZ,所以我们必须更改分频,使ADC转换时钟在14MHZ以内 

[STM32F103C8T6]ADC转换

配置ADC 

[STM32F103C8T6]ADC转换

 关于ADC转换的几个HAL库函数

        HAL_ADC_Start(&hadc1);//启动ADC转换

        原型:HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc)
        参数1:ADC句柄:&hadcx

          HAL_ADC_PollForConversion(&hadc1,50);//阻塞在这,等待转换完成

        原型:HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout)
      参数1:ADC句柄:&hadcx    参数2:堵塞时间

         HAL_ADC_GetValue(&hadc1);//读取ADC转换的值

        原型:uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc)          

       参数1 :ADC句柄:&hadcx 返回值:读取到的转换值 uint32_t型

本次实验是通过串口打印ADC的转换值,所以要使用printf重定向

#include <stdio.h>
#include <string.h>

int fputc(int ch,FILE*f)
{
	unsigned char temp[1] = {ch};
	HAL_UART_Transmit(&huart1,temp,strlen((const char*)temp),0xffff);
	return ch;
}

 使用重定向必须勾选Micro LIB库

 [STM32F103C8T6]ADC转换

main.c文章来源地址https://www.toymoban.com/news/detail-458238.html

int main(void)
{
  /* USER CODE BEGIN 1 */
	uint32_t smoke_value = 0;
  /* 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_ADC1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
		HAL_ADC_Start(&hadc1);//启动ADC转换
		HAL_ADC_PollForConversion(&hadc1,50);//阻塞在这,等待转换完成
		smoke_value = HAL_ADC_GetValue(&hadc1);//读取ADC转换的值
		printf("smoke_value = :%f\r\n",(3.3/4096)*smoke_value);
		HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

到了这里,关于[STM32F103C8T6]ADC转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [附源码] STM32F103C8T6+外接MCP4725 外部DAC

            STM32F103C8T6最小系统板是大家很常用的一款单片机,它内部有多个ADC模数转换通道,但并 没有DAC数模转换功能 ,当需要进行数字量转换为模拟量时就需要借助外部DAC。             MCP4725是具有非易失性存储器的单通道12位缓冲电压输出DAC。用户可将配置寄存器

    2024年02月04日
    浏览(20)
  • JQ8400语音模块-stm32f103c8t6(内含全代码)-亲测有效

    一.模块介绍 1.常见的JQ8400-FL语音模块有两种,一种是带3W功放,有4M的存储空间,可通过USB拷贝声音文件,通过单片机串口控制;另外一种是附有SD卡槽,用SD卡存储文件的文件(MP3格式)进行语音播报,也是通过单片机串口控制 2.我用的是二线串口通信,一线的没试过 3.程序

    2023年04月26日
    浏览(22)
  • MQ2烟雾传感器 - STM32F103C8T6-HAL库

    ADC.c 文件 ADC.h文件 main函数中的调用

    2024年04月26日
    浏览(14)
  • STM32F103C8T6+ESP8266WIFI+DHT11模块连接巴法云

    1.MCU:STM32F103C8T6 2.ESP8266:正点原子WIFI模块 3.串口模块:正点原子串口模块 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: ESP8266固件刷写 我用的是安信可的固件,可以在官网上下载。正点

    2023年04月27日
    浏览(38)
  • 【沧海拾昧】STM32F103C8T6/C6T6的ISP烧录

    #C0105 沧海茫茫千钟粟,且拾吾昧一微尘 ——《沧海拾昧集》@CuPhoenix 【阅前敬告】 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 【如有问题必是本集记录有谬,切勿深究】   对于某种STM32F103C8T6/C6T6最小系统板,没有配置J-LINK/ST-LINK烧录口,此时可以

    2024年02月03日
    浏览(42)
  • STM32F103C8T6---定时器1&定时器8输出PWM信号注意事项

    博主今天在驱动定时器1的通道1输出PWM信号的时候,遇到了好多问题,在这里指出,警醒自己的同时希望能给各位带来帮助 首先,第一个错误, 第一:PA8引脚默认模式就是定时器1的通道一,我们在代码里面,直接 将PA8的输出模式改为复用推挽输出,不要去重定向它,也不要

    2024年02月16日
    浏览(17)
  • STM32单片机PWM控制实现电机调速度(小车运动,STM32F103C8T6&TB6612&TT电机)

    作者:公子易平 时间:2023/6/6 前段时间做一个智能小车的相关项目时,发现很少有人能够将STM32的PWM控制讲清楚,故而书此文,希望对后来的学习者有所帮助。 STM32F103C8T6最小系统板 直流TT电机 电机驱动芯片(TB6612) 杜邦线若干 接线情况: TB6612引脚说明: STM32主控芯片与TB6612接

    2024年02月15日
    浏览(21)
  • STM32F103C8T6+ESP-01S+MQTT服务器实现数据上传和接收(一)

    文章目录 STM32F103C8T6+ESP-01S+MQTT服务器实现数据的上传和接收(二) ESP-01S推荐使用安信可官网1471号固件,烧录配置如下图。 请替换其中里面的内容 使用PA9、PA10分别连接ESP8266的RXD、TXD引脚。 由于每次发送的AT指令都会被8266通过串口再发送回来,为了缓解串口的压力,并且更

    2024年04月17日
    浏览(19)
  • STM32F103C8T6+2.4寸SPI TFT触摸屏代码+标准库 项目开发

    目录 模块清单: 模块介绍: 1:STM32F103C8T6 2:2.4寸SPI TFT触摸屏 项目结果展示 2.4寸 TFT SPI显示触摸屏 2.4寸 SPI TFT 显示触摸屏代码下载链接: https://download.csdn.net/download/weixin_49492286/88458377 清单 STM32F103C8T6 2.4寸SPI TFT触摸屏         STM32F103C8T6是意法半导体(STMicroelectronics)推

    2024年02月07日
    浏览(24)
  • 蓝牙小车(基于stm32f103c8t6/HAL库/CubeMX/超详细,包含代码讲解和原理图)

    一、小车1.0——基本蓝牙小车(仅蓝牙遥控小车运动方向,本篇) 二、小车2.0——蓝牙小车PLUS(可以蓝牙控制方向+蓝牙直接调节车速) 三、小车3.0——避障小车(超声波+舵机云台) 四、小车4.0——无线手柄方向感知操控小车(mpu6050+双蓝牙透传) 五、双轮自平衡小车(HAL库版

    2023年04月09日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包