RT-Thread STM32F407 ADC

ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。与之相对应的 DAC(Digital-to-Analog Converter),它是 ADC 模数转换的逆向过程。ADC 最早用于对无线信号向数字信号转换。如电视信号,长短播电台发射接收等。
在这里插入图片描述

  • 第一步,首先在 RT-Thread Settings中进行配置
    在这里插入图片描述
  • 第二步,退出RT-Thread Settings,进入board.h,定义ADC1
    在这里插入图片描述
  • 第三步,进入STM32CubeMX进行配置
    在这里插入图片描述
  • 第四步,回到main.c,找到adc1,并使能adc
rt_adc_device_t adc_dev = (rt_adc_device_t)rt_device_find(“adc1”);  /* 查找设备 */
rt_adc_enable(adc_dev, 1);    /* 使能adc1 的通道1 */
  • 第五步,读取采样值
rt_uint32_t value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
  • 第六步,将模拟信号转换为数字信号(12位adc 参考电压为3.3v)
rt_uint32_t  vol = value * 3.3/ 4096;

综上,main.c

#include <rtthread.h>
#include <rtdbg.h>
#include <rtdevice.h>
#include <board.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG

#define ADC_DEV_NAME        "adc1"      /* ADC 设备名称 */
#define ADC_DEV_CHANNEL     1           /* ADC 通道 */
#define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS        (1 << 12)   /* 转换位数为12位 */

int main(void)
{
    rt_adc_device_t adc_dev;
    rt_uint32_t value, vol;

    adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);  /* 查找设备 */
    if (adc_dev == RT_NULL)
    {
        rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);
        return RT_ERROR;
    }
    else {
        rt_kprintf("find %s success!\n",ADC_DEV_NAME);
    }

    rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);/* 使能设备 */

    while (1)
    {
        /* 读取采样值 */
        value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
        rt_kprintf("the value is :%d \n", value);

        /* 转换为对应电压值 */
        vol = value * REFER_VOLTAGE / CONVERT_BITS;
        rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
        rt_thread_mdelay(500);
    }
    return RT_EOK;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows10配置深度学习环境

一、Anaconda安装与虚拟环境创建 Anaconda的出现极大的方便了研究人员的Python开发工作&#xff0c;anaconda可以创建多个虚拟环境&#xff0c;这些虚拟环境就像一间间教室一样&#xff0c;虚拟环境彼此之间、虚拟环境与基础环境&#xff08;base&#xff09;之间互不影响&…

__builtin_expect(x,0)

As opposed to the C code, above we can see bar case precedes foo case. Since foo case is unlikely, and instructions of bar are pushed to the pipeline, thrashing the pipeline is unlikely. This is a good exploitation of a modern CPU

C/C++---------------LeetCode第1394.找出数组中的幸运数

找出数组中的幸运数 题目及要求暴力算法哈希算法在main里使用 题目及要求 在整数数组中&#xff0c;如果一个整数的出现频次和它的数值大小相等&#xff0c;我们就称这个整数为「幸运数」。 给你一个整数数组 arr&#xff0c;请你从中找出并返回一个幸运数。 如果数组中存在…

Java排序算法之贪心算法

贪心算法是一种优化问题的解决方法&#xff0c;它在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最优的。贪心算法常用于最优化问题&#xff0c;比如最小生成树、哈夫曼编码、最短路径等。贪心算法是一…

Java排序算法之希尔排序

希尔排序&#xff08;Shell Sort&#xff09;又称“缩小增量排序”&#xff0c;是直接插入排序算法的一种更高效的改进版本。它的基本思想是&#xff1a;首先将整个数组按照一定的间隔分成若干个子序列&#xff0c;然后对每个子序列分别进行插入排序&#xff0c;减小间隔&#…

day28_JQuery

今日内容 零、 复习昨日 一、正则表达式 二、JQuery 零、 复习昨日 js已经学完,js是让页面动态变化 1) 基本语法(变量,运算,逻辑,函数) 2) 事件(给标签绑定不同的事件) 3) dom(改变标签内容,属性,样式)一、引言 1.1 jQuery概述 原生js获得dom对象: var obj document.getElem…

李宏毅机器学习入门笔记——第三节

Convolutional Neural Network&#xff08;CNN&#xff09; 卷积神经网络 padding表示超过图片矩阵的距离 stride表示步长 常见的卷积都是3*3&#xff0c;同时可以知道图片的组成就是rgb也就是三个矩阵组成 使用卷积就是共用参数&#xff0c;减少参数量&#xff0c;不需要看整张…

Opengauss到Oracle增量同步, 使用debezium

一、概述 PG到Oracle的同步方案使用debezium kafka kafka-connect-jdbc。debezium是一款开源的变更捕获软件&#xff0c;它以kafka的connector形式运行&#xff0c;可以捕获PostgreSQL、MySQL、Oracle中的变更数据&#xff0c;保存到kafka。kafka-connect-jdbc是confluent公…

第一型曲面积分的第二型曲面积分的区别与联系【从几何知识的角度思考】

此处为曲线积分------>【问题思考总结】第一型曲线积分和第二型曲线积分的区别与联系【从几何知识的角度思考】 一二型曲面积分有什么区别&#xff1f;&#xff08;了解&#xff09; 一型曲面积分&#xff1a; 由dS进行表示。可以想像&#xff0c;dS是一个面积微元&#x…

MySQL数据库清理Relay_Log_File日志

背景 “Relay_Log_File” 是 MySQL 中用于复制的参数之一。在 MySQL 复制中&#xff0c;当一个服务器作为主服务器&#xff08;master&#xff09;时&#xff0c;它会将其更改写入二进制日志文件&#xff08;binary log file&#xff09;。而另一个服务器作为从服务器&#xf…

阿里云99元VS腾讯云88元,双11云服务器价格战,谁胜谁负?

在2023年的双十一优惠活动中&#xff0c;阿里云推出了一系列令人惊喜的优惠活动&#xff0c;其中包括99元一年的超值云服务器。本文将带您了解这些优惠活动的具体内容&#xff0c;以及与竞争对手腾讯云的价格对比&#xff0c;助您轻松选择最适合的云服务器。 99元一年服务器优…

每日汇评:积极的数据可能会推动澳元/美元的上涨

继 9 月份增加 6700 个就业岗位之后&#xff0c;澳大利亚 10 月份预计将增加 18000 个就业岗位&#xff1b; 失业率预计将从 3.6% 升至 3.7%&#xff0c;维持在历史低点附近&#xff1b; 澳元/美元在美元疲软的支撑下维持看涨基调&#xff0c; 其面临关键阻力位0.6520&#xff…

【Linux】初识网络

目录 背景 协议 什么是协议 协议分层 OSI七层模型 TCP/IP模型 网络协议栈与 OS 的关系 网络传输 局域网中直接通信 数据的封装与分用 局域网通信原理 数据碰撞 跨路由器进行远端通信 IP的介绍 传输演示 背景 &#x1f9ca;一开始&#xff0c;计算机都是一台台独…

Java实现拼图游戏

拼图游戏是一种智力类游戏&#xff0c;玩家需要将零散的拼图块按照一定的规律组合起来&#xff0c;最终拼成完整的图案。拼图游戏的难度可以根据拼图块数量、拼图的形状、图案的复杂程度等因素来调整。这种游戏适合各个年龄层的玩家&#xff0c;能够提高大脑的观察力、空间感知…

WPF xaml Command用法介绍

WPF (Windows Presentation Foundation) 中的命令设计模式是一种用于分离用户界面逻辑和业务逻辑的方法。在WPF中&#xff0c;这种模式通过命令接口&#xff08;如 ICommand&#xff09;实现&#xff0c;使得用户界面组件&#xff08;如按钮、菜单项等&#xff09;可以触发不直…

工厂自动化中DCS软件

概述 Monitor.Analog是新一代运行监控系统&#xff0c;是物联网时代数据驱动的智能工厂的神经中枢。通过连接到阿自倍尔专有的在线故障预测系统&#xff08;该系统利用 AI&#xff08;人工智能&#xff09;&#xff09;以及利用来自各个智能设备的监控和诊断数据的系统&#x…

Unity Meta Quest 一体机开发(六):HandGrabInteractor 和 HandGrabInteractable 知识点

文章目录 &#x1f4d5;教程说明&#x1f4d5;HandGrabInteractor⭐HandGrabAPI⭐HandWristPoint⭐GripPoint⭐PinchPoint⭐PinchArea⭐HandGrabVisual⭐HandGrabGlow &#x1f4d5;HandGrabInteractable⭐Support Grab Type⭐Pinch Grab Rules 和 Palm Grab Rules⭐Unselect M…

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项

问题&#xff1a;右键时&#xff0c;没有创建servlet的快捷键&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 1.打开idea&#xff0c;点击File>settings(设置)&#xff0c;进入settings页面&#xff0c;如下 从上图中的Files选项中没看到有servlet选项&#xff0c;…

拿到信创天翼云电脑账号后,我又傻眼了...

在《面向国产系统的 App 发布&#xff0c;含泪总结》中&#xff0c;我就吐槽过信创产品的不靠谱。用户购买一台终端&#xff0c;都没法用&#xff0c;得经历复杂的账号申请。 紧催慢催&#xff0c;等待了半个月之后&#xff0c;今天终于拿到了账号。然而&#xff0c;满怀期待登…

人工智能+游戏 会带来什么

“人工智能游戏” 写在前面 随着人类生活水平的日益提高&#xff0c;游戏正在为越来越多的人们带去欢乐。同时&#xff0c;作为21世纪新兴科学技术的人工智能&#xff0c;也正在研究人员的努力下不断向前突破。那么&#xff0c;这两列高速前进的“火车”能否接轨并行呢&#…