STM32ADC单通道转换

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

STM32ADC单通道转换

1. 初始化

ADC功能初始化主要分三部分,GPIO初始化、ADC模式初始化与NVIC初始化。

1.1初始化GPIO

void ADC_GPIO_Config(void)                                  // 配置ADC通道引脚
{
	GPIO_InitTypeDef GPIO_InitStructure;                    // 定义GPIO结构体
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);    // 使能GPIOC时钟
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;               // 选择ADC通道引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;           // 设置引脚模式为模拟输入
	
	GPIO_Init(GPIOC,&GPIO_InitStructure);                   // 初始化引脚
}

1.2 初始化ADC模式

void ADC_MODE_Config(void)
{
	ADC_InitTypeDef ADC_InitStructure;                      // 定义ADC结构体
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE);     // 使能ADC2时钟
	
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;      // 设置ADC工作模式为独立模式
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;           // 设置ADC扫描模式为单通道模式
	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;      // 设置ADC连续转换模式为开启
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 设置ADC外部触发模式为无
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  // 设置ADC数据对齐模式为右对齐
	ADC_InitStructure.ADC_NbrOfChannel = 1;                 // 设置ADC通道数为1
	ADC_Init(ADC2,&ADC_InitStructure);                      // 初始化ADC2
	
	RCC_ADCCLKConfig(RCC_PCLK2_Div8);                       // 设置ADC时钟为PCLK2的8分频
	
	ADC_RegularChannelConfig(ADC2,ADC_Channel_11,1,ADC_SampleTime_55Cycles5);   // 设置ADC通道为11,采样时间为55.5周期
	
	ADC_ITConfig(ADC2,ADC_IT_EOC,ENABLE);                   // 使能ADC2中断
	
	ADC_Cmd(ADC2,ENABLE);                                   // 使能ADC2
	
	ADC_ResetCalibration(ADC2);                             // 重置ADC2校准寄存器
	while(ADC_GetResetCalibrationStatus(ADC2));             // 等待ADC2校准寄存器重置完成
	
	ADC_StartCalibration(ADC2);                             // 启动ADC2校准
	while(ADC_GetCalibrationStatus(ADC2));                  // 等待ADC2校准完成
	
	ADC_SoftwareStartConvCmd(ADC2,ENABLE);                  // 启动ADC2软件转换
}

1.3 初始化NVIC

void ADC_NVIC_Config(void)                                      // ADC2中断优先级配置
{
	NVIC_InitTypeDef NVIC_InitStructure;                        // 定义NVIC_InitTypeDef结构体变量
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);             // 设置NVIC中断分组1
	
	NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;           // 设置中断通道为ADC1_2_IRQn
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   // 设置中断优先级为1
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;          // 设置中断子优先级为1
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;             // 使能中断通道
	
	NVIC_Init(&NVIC_InitStructure);                             // 初始化NVIC_InitTypeDef结构体变量
}

2.中断函数编写

中断函数命名为ADC1_2_IRQHandler即可,换ADC通道的话名字也要换。文章来源地址https://www.toymoban.com/news/detail-837753.html

void ADC1_2_IRQHandler(void)                            // ADC2中断服务函数
{
	
	if(ADC_GetITStatus(ADC2,ADC_IT_EOC) == SET)         // 判断是否为ADC2转换完成中断
	{
		ADC_Converted = ADC_GetConversionValue(ADC2);   // 读取ADC2转换结果
	}
	ADC_ClearITPendingBit(ADC2,ADC_IT_EOC);             // 清除ADC2转换完成中断标志位
}

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

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

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

相关文章

  • STM32 hal库使用笔记(五)ADC—单通道/双通道DMA传输

    实现目的:利用ADC采集光敏传感器/烟雾传感器的值,并利用串口打印 实验平台:正点原子精英版 一、简介 1.DMA的介绍 参考:STM32 hal库使用笔记(四)DMA—内存到内存/内存到外设_乱码小伙的博客-CSDN博客 2.ADC简介      ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚

    2024年02月03日
    浏览(60)
  • STM32 CubeMX ADC采集 单通道,多通道,内部温度(轮询,DMA,中断)(HAL库)

    12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部 信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右 对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定

    2024年02月06日
    浏览(85)
  • 【正点原子STM32连载】第三十三章 单通道ADC采集实验 摘自【正点原子】APM32E103最小系统板使用指南

    1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 本章介绍使用APM32E103模数转换器(ADC)进行带通道的电压采集。通过本章的学习,读者将学习到单通

    2024年02月19日
    浏览(58)
  • STM32自学☞AD单通道

      程序的最终运行成果: 当转动电位器时,数值和电压值发生变化 #include \\\"stm32f10x.h\\\" #include \\\"stm32f10x_adc.h\\\" #include \\\"ad.h\\\" #include \\\"stdint.h\\\" void ad_Init(void) {  /*  初始化步骤:  1.开启GPIO时钟和ADC时钟,配置ADCCLK  2.配置GPIO,模拟输入模式  3.配置多路开关  4.配置ADC转换器  5.开启

    2024年03月21日
    浏览(51)
  • 实验(六):ADC应用:独立模式单通道采集实验

    实验目的: 1. 学习对ADC基础功能的使用; 2. 掌握KEIL5的仿真与调试。 任务: 1.   根据要求编写程序,并写出原理性注释; 2. 将检查程序运行的结果,分析一下是否正确; 3. 完成所建工程的验证调试。 贴片滑动变阻器的动触点通过连接至STM32 芯片的ADC 通道引脚。当我们使

    2024年02月15日
    浏览(53)
  • HAL库配置ADC_1_单通道配置

    💦在使用ADC外设前,先查看下芯片手册,看下ADC的特点。 💦ADC的使用,一定是有参考电压的,在使用时要注意,芯片手册上关于ADC参考电压的范围。 通常正参考电压VREF+连接到VCC,负参考电压VREF-连接到GND 💦通过框图可以了解ADC的工作流程。   下面是ADC比较常用的参数说

    2024年02月04日
    浏览(43)
  • 基于 VITA57.4 标准的单通道 6GSPS 12 位采样 ADC,单通道 6GSPS 16 位采样 DAC 子卡模块

    概述 FMC147 是一款单通道 6.4GSPS(或者配置成 2 通道 3.2GSPS)采样率的 12 位 AD 采集、单通道 6GSPS(或配置成 2 通道 3GSPS) 采样率 16 位 DA 输出子卡模块,该板卡为 FMC+标准,符合 VITA57.4 规范,该模块可以作为一个理想的 IO 单元耦合至 FPGA 前端,ADC 数字端通过 16lane 通道的 JE

    2023年04月16日
    浏览(56)
  • OpenCV 将单通道转换为三通道

    项目有个需求:图片传至图像算法库处理完成后需要返回结果图像进行再加工。 目前的情况是相机拍下来的图像是灰度图 传送图像指针给算法处理,算法处理完后将检测结果(eg. ok,ng)写入一张三通道图,只有这样才可以显示彩色文字 然后现在需要回传此三通道图片的指针

    2024年02月11日
    浏览(41)
  • python图像三通道和单通道互转

    三通道转单通道 三通道转单通道很简单,使用cv2读取图像的时候指定读取图像格式为 cv2.IMREAD_GRAYSCALE 就可以,但是用imwrite进行存图 下面是关于cv2.imread()函数的参数 单通道转三通道 expand_dims(img,axis=0) 下面是关于这个函数axis插入纬度的一些理解 当处理是一纬数组时,可以插

    2024年02月05日
    浏览(48)
  • pytorch保存单通道灰度图片

    前言 pytorch中通常如上使用torchvision.utils.save_image来保存图片,但是在保存单通道灰度图片时,该函数保存后的图片会是3通道的,虽然每个通道上的数据一样,视觉上也是灰度图片,但后续输入单通道的网络会报错。 方案 此时我们可以用将图片转换成PIL,用它提供的save()方法来

    2024年02月11日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包