关于ADC单次扫描和连续扫描的操作指导(STM32F103ZET6正点原子版)作者 江汉大学 计科224尹伦能

news2024/9/22 23:50:56

STM32CubeMX环境配置

1 ADC1配置

 

选中ADC1,然后勾选IN0,其余设置均默认不变(此为单次扫描,若是连续扫描,只需要将上图中的Continuous Conversion Mode由Disabled变为Enabled即可)。

2 RCC及时钟配置

 

选中RCC,然后在HSE一栏选择Crystal/Ceramic Resonator。

接着是时钟配置,和之前实验一样的配置方法,这里不再赘述。

3 SYS配置

 

SYS界面,在Debug里选择Serial Wire。(选择使用SWD协议下载和调试)

4 I2C配置

 

选择I2C1,然后选择I2C,其余配置默认不变。

5 芯片引脚图展示

 

配置完所有环境后,引脚图大致是图片所展示的。

Keil 环境配置

1 OLED配置

详细操作可以参考老师的这个博客

 

 

解压完老师的OLED_IIC压缩包,将OLED_Classic文件夹中的OLED.c放入Core文件夹下的Src中

 

 

将OLED_Classic文件夹中的OLED.h和OLED_Font.h放入Core文件夹下的Inc中

 

 

然后在Keil中按照图示操作(上面两张图片)添加OLED.c文件即可

2 代码修改

 

 

头文件添加#include "oled.h"。

HAL_StatusTypeDef HalState;  //HAL库函数返回状态
uint16_t Ret; //返回值
uint16_t ADValue; //AD转换值
float Voltage; //电压值
void SystemClock_Config(void);上方添加这段代码。
uint16_t StartAndGetOneResult(){
    HAL_ADC_Start(&hadc1);  //启动ADC转换
    HalState= HAL_ADC_PollForConversion(&hadc1, 10);//等待转换完成
    if(HalState == HAL_OK){
          Ret=HAL_ADC_GetValue(&hadc1);  //获取ADC转换结果
    } else{
        Ret=0;
    }
    //HAL_ADC_Stop(&hadc1);
    return  Ret;
}

void SystemClock_Config(void);下方添加这段代码。

 
OLED_Init();        //OLED初始化
/*OLED显示*/
OLED_ShowString(1,1,"ADValue:");
OLED_ShowString(2,1,"Voltage:0.00V");

main函数while循环上方添加这段代码。

 
ADValue= StartAndGetOneResult();  //启动ADC转换并获取结果
        OLED_ShowNum(1,9,ADValue,4); //显示AD转换值
        Voltage=(float) ADValue/ 4095 *3.3;  //计算电压值
        OLED_ShowNum(2,9,(uint32_t)Voltage,1); //显示电压值整数部分
        OLED_ShowNum(2,11,((uint16_t)(Voltage * 100)) % 100,2); //显示电压值小数部分
        HAL_Delay(100);
main函数while循环里面添加这段代码。

最终界面图如下面两张图所示

 

 

结果图展示

 

 

每一次随着电位器旋转,OLED屏幕上显示的电压值会发生变化。共有六种电压值情况。

(电位器有三个引脚,一个引脚接GND,一个引脚接3.3V,另外一个接ADC通道PA0,简单的排列A(3,3)即可得到电压值的种数)

以上展示的是其中的一种情况。

参考资料:

用HAL库改写江科大的stm32入门-7-1 ADC

用HAL库改写江科大的stm32入门例子4-1 OLED

​ 作者:计科224尹伦能

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

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

相关文章

分析 ECharts 图表渲染导致的内存泄漏问题 - 附解决方案

一. 引言 在今年某个可视化大屏项目中,出现了一个问题。项目在运行一段时间后,页面出现了崩溃,而且是大概运行几天之后,因为大屏项目是部署到客户现场大屏,长时间运行不关闭。报错问题如下图所示: 由于这个…

重磅发布!DeepSeek-V2.5:融合通用与代码能力的全新开源模型

前沿科技速递🚀 在人工智能飞速发展的今天,通用对话与代码生成的融合已经成为开发者高效工作的关键工具。近日,DeepSeek 团队正式发布了全新的 DeepSeek-V2.5 模型,一个强大的开源模型,它将通用语言处理与代码生成能力…

Python爱心射线

系列目录 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…

高效录屏攻略:电脑视频录制时声音同步捕获技巧,轻松搞定高清音质

在当今数字化时代,无论是在线教育、远程工作还是内容创作,录制视频已经成为我们生活中不可或缺的一部分。但是,很多人在录制视频时都会遇到一个问题:如何同时录制声音?如果你也在为此烦恼,那么这篇文章将为…

OpenCV通过鼠标提前ROI(C++实现)

文章目录 鼠标绘制矩形提取ROI任意形状绘制提前ROI 废话不多说&#xff0c;直接上代码 鼠标绘制矩形提取ROI #include <iostream> #include <opencv2\opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp>us…

算法_优先级队列---持续更新

文章目录 前言最后一块石头重量题目要求题目解析代码如下 数据流中的第K大元素题目要求题目解析代码如下 前K个高频单词题目要求题目解析代码如下 数据流的中位数题目要求题目解析代码如下 前言 本文将会向你分享优先级队列相关的题目&#xff1a;最后一块石头重量、数据流中的…

【运维自动化-作业平台】脚本版本管理如何使用

在蓝鲸作业平台中&#xff0c;执行脚本是最常见的功能之一&#xff0c;支持快速录入脚本执行和引用脚本执行&#xff0c;引用的脚步即单独写好的&#xff0c;并且由定期管理更新的脚本&#xff0c;主要有业务脚本和公共脚本两种。快速脚本 手动页面编写的脚本&#xff0c;没有…

将小写字母转换为大写字母(c 语言)

2.我们第一步输入字符串&#xff0c;第二步进行筛选将字符串中所以下标为奇数位置上的字母转换成大写&#xff0c;如果该位置不是字母&#xff0c;则不转换。 #include <stdio.h> #include <string.h> void fun( char *ss ) {int i 0;while (*ss ! \0){if (i % 2…

ACL 2024:交叉领域情感分析——论文阅读笔记

前言 阅读了一篇ABSA的论文&#xff0c;在这里写下自己的一些理解小笔记&#xff0c;可能有点小乱&#xff0c;原文在这下面&#xff1a; 论文链接&#xff1a;Refining and Synthesis: A Simple yet Effective Data Augmentation Framework for Cross-Domain Aspect-based Sen…

swoole协程 是单线程的,还是多线程的

Swoole 协程本质上是单线程的&#xff0c;但它可以在多个线程中运行。因此&#xff0c;Swoole 协程既可以看作是单线程的&#xff0c;也可以在多线程的环境下运行&#xff0c;这取决于你如何使用 Swoole。 理解 Swoole 协程的运行模式 1 单线程中的协程&#xff1a; 在一个单…

构建常态化安全防线:XDR的态势感知与自动化响应机制

当前&#xff0c;网络安全威胁日益复杂多变&#xff0c;企业正面临前所未有的严峻挑战。为有效应对这些挑战&#xff0c;态势感知与自动化响应机制在提升网络安全运营效率与防御效果中扮演着至关重要的角色。它们能够实时监测网络状态&#xff0c;智能分析潜在威胁&#xff0c;…

浏览器中的JavaScript核心BOM(浏览器对象模型)重点掌握对象之History对象的属性与方法

History对象是用来把网页浏览历史用类似栈的方式进行表示。 这定义听起来非常的抽象&#xff0c;其实History对象的作用就跟浏览器的前进和后退很像&#xff0c;我们来用几幅图来理解一下。首先我们先回顾一下浏览器的返回上一个页面 和 跳转到下一个页面 这两个功能。 就类似…

【计算机网络】网络通信中的端口号

文章目录 一、引入端口号二、端口号的作用三、端口号的确定 在TCP/IP协议中&#xff0c;传输层有两个重要的协议&#xff1a;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;。TCP用于提供可靠的数据传输&#xff0c;而UDP则适合用于广播…

labview对位项目

带角度对位 1、上下拍照对照 项目类型&#xff1a;模组、PACK入箱&#xff0c;以下以模组入箱为例 项目目标&#xff1a;机器人抓起模组&#xff0c;通过上相机定位箱体上的销钉&#xff0c;通过下相机定位模组上的端板孔&#xff0c;计算出旋转偏移量XYR&#xff0c;让模组上…

苹果能引领端侧AI大模型时代吗?

苹果能引领端侧AI时代吗&#xff1f; 这份完整版的大模型 AI 学习资料已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 北京时间9月10日凌晨&#xff0c;苹果正式发布了iPhone 16&#xff0c;这是苹果第一款真正意义上的 …

精品PPT | 离散制造行业智能工厂总体解决方案

一、建设背景 离散制造业&#xff0c;包括机械制造业、汽车制造业和家电制造业等&#xff0c;其生产过程涉及多个不连续的工序&#xff0c;产品通常由多个零件装配而成。这类行业面临的挑战包括品种多、批量小、订单变化快、临时插单频繁以及外协件管理困难等问题&#xff0c;…

相机光学(三十七)——自动对焦原理

1.自动对焦的三种方式 目前在手机上采用的自动对焦系统包括反差对焦、相位对焦和激光对焦三种方案&#xff0c;下面我们来看一下它们的工作原理和相互之间的区别是什么。 1.1反差对焦【CDAF】- Contrast Detection Auto Focus 反差对焦是目前普及率最高、使用最广泛、成本相对…

Leetcode 701-二叉搜索树中的插入操作

给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能存在多种有效的插入方式&a…

QT之QML学习五:添加自定义Qml组件

开发环境: 1、Qt 6.7.2 2、Pyside6 3、Python 3.11.4 4、Windows 10 重要的事情说三遍,使用自定义qml参考链接: Qt官网参考网址!!! 重要的事情说三遍,使用自定义qml参考链接: Qt官网参考网址!!! 重要的事情说三遍,使用自定义qml参考链接: Qt官网参考网址!!!…

2024年华为杯数学建模研赛 最全赛中助攻|选题建议+思路+代码+成品论文预定

2024年华为杯研究生数学建模竞赛&#xff08;以下简研赛&#xff09;将于9月21日上午8时正式开始。 下文包含&#xff1a;2024研赛思路解析​、研赛参赛时间及规则信息说明、好用的数模技巧及如何备战数学建模竞赛 C君将会第一时间发布选题建议、所有题目的思路解析、相关代码…