STM32-ADC实验

news2025/1/15 3:18:29

实验1:单ADC单通道中断

硬件原理图

由于PC1接到电位器上,所以我们实验选择PC1引脚作为ADC接口,查询STM32数据手册得知PC1可作为ADC1的IN11(ADC1_IN11)。

USART配置

115200-8-N-1,重定向支持printf打印,勾选C库。

ADC1配置

ADC_HandleTypeDef hadc1;

void MX_ADC1_Init(void)
{
    ADC_ChannelConfTypeDef sConfig = {0};

	/* Common config */
    hadc1.Instance 						= ADC1;
    hadc1.Init.ScanConvMode 			= ADC_SCAN_DISABLE;
    hadc1.Init.ContinuousConvMode		= ENABLE;
    hadc1.Init.DiscontinuousConvMode 	= DISABLE;
    hadc1.Init.ExternalTrigConv 		= ADC_SOFTWARE_START;
    hadc1.Init.DataAlign 				= ADC_DATAALIGN_RIGHT;
    hadc1.Init.NbrOfConversion 			= 1;

    if (HAL_ADC_Init(&hadc1) != HAL_OK)
    {
        Error_Handler();
    }

    /* Configure Regular Channel */
    sConfig.Channel 					= ADC_CHANNEL_11;
    sConfig.Rank 						= ADC_REGULAR_RANK_1;
    sConfig.SamplingTime 				= ADC_SAMPLETIME_1CYCLE_5;

    if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
    {
        Error_Handler();
    }

    HAL_ADC_Start_IT(&hadc1);
}

void HAL_ADC_MspInit(ADC_HandleTypeDef *adcHandle)
{

    GPIO_InitTypeDef GPIO_InitStruct = {0};

    if (adcHandle->Instance == ADC1)
    {
        __HAL_RCC_ADC1_CLK_ENABLE();

        __HAL_RCC_GPIOC_CLK_ENABLE();
        /**ADC1 GPIO Configuration
        PC1     ------> ADC1_IN11
        */
        GPIO_InitStruct.Pin = GPIO_PIN_1;
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

        /* ADC1 interrupt Init */
        HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0);
        HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
    }
}

void HAL_ADC_MspDeInit(ADC_HandleTypeDef *adcHandle)
{

    if (adcHandle->Instance == ADC1)
    {
        __HAL_RCC_ADC1_CLK_DISABLE();

        /**ADC1 GPIO Configuration
        PC1     ------> ADC1_IN11
        */
        HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1);

        /* ADC1 interrupt Deinit */
        HAL_NVIC_DisableIRQ(ADC1_2_IRQn);
    }
}

初始化结构体的参数

ScanConvMode:扫描转换模式

指定转换是扫描模式(多通道模式)还是单个转换(单通道模式)。ADC_SCAN_DISABLE 或 ADC_SCAN_ENABLE。

在扫描模式下,扫描一组选定的通道,它们将会被依次转换,由序列寄存器ADC_SQRx或ADC_JSQRx选中的通道被转换。如果分别设置了EOCIE位或JEOCIE位,只在最后一个通道转换完后才会产生EOC或JEOC中断。

ContinuousConvMode:连续转换模式

ADC转换可以在一次转换后停止,然后再次触发后进行下一次转换(一般配置);

也可以是持续不断地进行转换。

通过ADC_CR2:CONT位决定。

ExternalTrigConv:外部触发方式

根据项目需求配置触发源。实际上一般使用软件自动触发。

测试环节

__IO uint32_t ADC_ConvertedValue;
float ADC_Vol; 

/**
  * @brief  转换完成中断回调函数(非阻塞模式)
  * @param  AdcHandle : ADC句柄
  * @retval 无
  */
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *AdcHandle)
{
    ADC_ConvertedValue = HAL_ADC_GetValue(AdcHandle);
}

void test(void)
{
    while (1)
    {
	    HAL_Delay(1000);
	    ADC_Vol =(float) ADC_ConvertedValue*(3.3/4096); // 读取转换的AD值
	    printf("\r\n The current AD value = %f V \r\n", ADC_Vol);  
    }
}

实验现象

旋钮电位器,电压输入有变化。将PC1接到VCC,输出3.3V。

实验2:单ADC单通道DMA

硬件原理图和USART配置

看实验1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超简单的视差滚动网站

超简单的视差滚动网站 原理能就是记录鼠标的滚动,然后给不同的元素添加不同的偏移 遵循开源精神,源码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width…

视觉SLAM数据集(三):KITTI 数据集

教程目录 一、官网二、注册登录三、下载数据集四、测试数据集 一、官网 官网地址&#xff1a;https://www.cvlibs.net/datasets/kitti/eval_odometry.php Kitti数据集很庞大&#xff0c;包含了双目、光流、场景流、深度、里程计、目标、跟踪、马路、语义、原始数据等大类别&…

C++入门(3):引用,内联函数

一、引用 1.1 引用特性 引用必须初始化 一个变量可以有多个引用 引用一旦引用一个实体&#xff0c;就不能引用其他实体 int main() {int a 10, C 20;int& b a;b c; // 赋值&#xff1f;还是b变成c的别名&#xff1f;return 0; }1.2 常引用 引用权限可以平移或缩小…

有没有免费靠谱的配音软件?(不带广告)

免费配音软件在当今社会中越来越受到人们的关注和喜爱。随着科技的不断发展和智能手机的普及&#xff0c;配音软件成为了人们生活中不可或缺的一部分。无论是在职场中需要制作视频配音&#xff0c;还是在社交媒体上发布个人动态&#xff0c;配音软件都能帮助我们实现文字转语音…

以太坊搭建私有链(非常详细!!!)

我的系统&#xff1a;CentOS7 64位 我喜欢宝塔的直观&#xff1a; /www/server/panel/pyenv/bin/python3.7 -m pip install --upgrade pip yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed84…

【APP VTable】和市面上的 Table 组件一样,都是接收表格[] 以及数据源[]

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; uni-app | 小程序开发 开发工具&#xff1a;HBuilderX 这里写目录标题 表格组件USE 表格组件 <template><view class"scroll-table-wrapper"><view class"scroll-table-container"…

使用 excel 快速拼接省市区镇街村居五级区划完整名称

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言数据准备excel 函数附件 前言 之前做了国家区划的映射关系&#xff0c;在其过程中&#xff0c;使用代码…

JAVA-编程基础-12-01-创建多线程的3种方式

JAVA-编程基础-12-创建多线程的3种方式 文章目录 JAVA-编程基础-12-创建多线程的3种方式创建一个类继承Thread类&#xff0c;并重写run方法创建一个类实现Runnable接口&#xff0c;并重写run方法实现Callable接口&#xff0c;重写call()方法&#xff0c;这种方式可以通过Future…

亚马逊云代码AI助手CodeWhisperer使用教程

一、CodeWhisperer 简介 1、CodeWhisperer是一款基于机器学习的通用代码生成器&#xff0c;由Amazon出品&#xff0c;可以给我们提供代码建议。 2、CodeWhisperer 基于各种上下文线索提供建议&#xff0c;包括光标在源代码中的位置、位于光标前面的代码、注释&#xff0c;以及…

MR混合现实情景实训教学系统在旅游管理专业中的应用

在旅游管理专业中&#xff0c;MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面&#xff1a; 1. 实地考察的替代&#xff1a;对于一些无法实地考察的景点或设施&#xff0c;学生可以通过MR系统进行虚拟参观&#xff0c;从而了解其实际情况。这不仅可以减少时间和…

Banana Pi BPI-W3 RK3588开源硬件开发板 Debian11详解

1. 简介 RK3588从入门到精通Debian 是⼀种完全⾃由开放并⼴泛⽤于各种设备的 Linux 操作系统。Rockchip在官⽅Debian发⾏版的基础上构建和适配了相关硬件功能 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian…

Java中配置RabbitMQ基本步骤

在Java中配置RabbitMQ&#xff0c;需要遵循以下步骤&#xff1a; 1.添加依赖 在项目的pom.xml文件中添加RabbitMQ的Java客户端依赖&#xff1a; <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><versio…

搜维尔科技:Varjo-最自然和最直观的互动

创建真实生活虚拟设计 Varjo让你沉浸在最自然的混合和虚拟现实环境中。 世界各地的设计团队可以聚集在一个摄影现实的虚拟空间中,以真实的准确性展示新的概念-实时的讨论和迭代。这是一个充满无限创造潜力的新时代,加速了人类前所未有的想象力。 虚拟现实、自动反应和XR设计的…

虹科案例 | 2016款别克昂科拉车发动机偶尔无法起动

作者&#xff1a;建辉汽车诊断中心 梁建辉 梁建辉&#xff0c;TechGear汽车诊断学院优秀学员&#xff0c;从事汽车维修工作15年&#xff0c;现自营“建辉汽车诊断中心”门店。 故障现象 一辆2016款别克昂科拉车&#xff0c;搭载LFF发动机&#xff0c;累计行驶里程约为8.6万km。…

【LeetCode每日一题】——1379.找出克隆二叉树中的相同节点

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目注意】六【题目示例】七【题目提示】八【题目进阶】九【解题思路】十【时间频度】十一【代码实现】十二【提交结果】 一【题目类别】 广度优先搜索 二【题目难度】 简单 三【题目编号】 1379.找…

分享一下微信小程序的文章中怎么添加营销活动

在数字化时代&#xff0c;小程序已经成为企业营销的重要工具。通过小程序&#xff0c;企业可以提供更加便捷、高效的服务&#xff0c;吸引更多的用户和客户。本文将以小程序营销活动为主题&#xff0c;介绍如何在小程序文章中加入营销活动&#xff0c;提高品牌知名度和销售额。…

DAY32 122. 买卖股票的最佳时机 II + 55. 跳跃游戏 + 45.跳跃游戏 II

122. 买卖股票的最佳时机 II 题目要求&#xff1a;给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;。 注意&#xff1a;你不能同时…

基于springboot实现漫画网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现漫画网站管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括…

Docker从入门到实战

Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓&#xff0c;应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …

Snowflake雪花算法

文章目录 分布式ID一、雪花算法起源二、雪花算法的原理三、java实现雪花算法四、常见问题总结 分布式ID 分布式ID&#xff0c;也称为全局唯一ID&#xff0c;是在分布式系统中用于标识数据的唯一标识符。随着业务量的不断扩展&#xff0c;传统的UUID和数据库自增ID无法满足需求…