stm32使用单通道规则组ADC
Driver_ADC.c
如果需要关闭adc转换,只需要设置CNT,将其置为0,后面再转换一次就停止了。
#include "Driver_ADC.h"void Driver_ADC1_Init(void)
{/* 1. 时钟配置 *//* 1.1 adc时钟 */RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;RCC->CFGR |= RCC_CFGR_ADCPRE_1;RCC->CFGR &= ~RCC_CFGR_ADCPRE_0;/* 1.2 gpio的时钟 */RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;/* 2. gpio工作模式: PC0 模拟输入 CNF=00 MODE=00 */GPIOC->CRL &= ~(GPIO_CRL_CNF0 | GPIO_CRL_MODE0);/* 2. ADC相关配置 *//* 2.1 禁用扫描模式. 只有一个通道不用扫描 */ADC1->CR1 &= ~ADC_CR1_SCAN;/* 2.2 启用连续转换模式 CR2=CONT 1*/ADC1->CR2 |= ADC_CR2_CONT;/* 2.3 数据对齐方式: 右对齐 左对齐 */ADC1->CR2 &= ~ADC_CR2_ALIGN;/* 2.4 设置采样时间 ADC_SMPR1 010=13.5周期*/ADC1->SMPR1 &= ~(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0);ADC1->SMPR1 |= ADC_SMPR1_SMP10_1;/* 2.6 通道组的配置 *//* 2.6.1 配置几个通道需要转换 */ADC1->SQR1 &= ~ADC_SQR1_L;/* 2.6.1 把通道号配置到组里面. */ADC1->SQR3 &= ~ADC_SQR3_SQ1; /* 先把5位清零 */ADC1->SQR3 |= 10 << 0; /* 设置最后5位 *//* 2.7 选择软件触发 */ADC1->CR2 |= ADC_CR2_EXTTRIG; /* 开启规则组的外部转换 */ADC1->CR2 |= ADC_CR2_EXTSEL; /* 选择使用软件触发ADC */
}void Driver_ADC1_StartConvert(void)
{/* 1. 上电: 把ADC从休眠模式唤醒 */ADC1->CR2 |= ADC_CR2_ADON;/* 2. 执行校准 */ADC1->CR2 |= ADC_CR2_CAL;while (ADC1->CR2 & ADC_CR2_CAL);/* 3. ADON = 1, 开始转换 0>1 从休眠模式唤醒 1->1 开始 */ADC1->CR2 |= ADC_CR2_ADON;/* 4. 使用软件开始转换规则通道 */;ADC1->CR2 |= ADC_CR2_SWSTART;/* 5. 等待首次转换完成 */while((ADC1->SR & ADC_SR_EOC) == 0);}double Driver_ADC1_ReadV(void)
{// 12位的ADC 范围 [0, 4095]return ADC1->DR * 3.3 / 4095;
}
Driver_ADC.h
#ifndef __DRIVER_ADC_H
#define __DRIVER_ADC_H#include "stm32f10x.h"void Driver_ADC1_Init(void);void Driver_ADC1_StartConvert(void);double Driver_ADC1_ReadV(void);
double Driver_ADC1_ReadV(void);#endif
main.c
#include "Driver_USART.h"#include "Delay.h"
#include "Driver_ADC.h"int main()
{Driver_USART1_Init();printf("ADC单通道\r\n");Driver_ADC1_Init();Driver_ADC1_StartConvert();while (1){double v = Driver_ADC1_ReadV();printf("v = %.2f\r\n", v);Delay_s(1);}
}相关文章:
stm32使用单通道规则组ADC
Driver_ADC.c 如果需要关闭adc转换,只需要设置CNT,将其置为0,后面再转换一次就停止了。 #include "Driver_ADC.h"void Driver_ADC1_Init(void) {/* 1. 时钟配置 *//* 1.1 adc时钟 */RCC->APB2ENR | RCC_APB2ENR_ADC1EN;RCC-&g…...
[python][whl]causal-conv1d的python模块在windows上whl文件下载
【模块介绍】 causal-conv1d,即因果一维卷积(Causal 1D Convolution),是一种在深度学习特别是时序数据处理中广泛应用的卷积技术。它主要特点在于其“因果性”,即输出的每个元素仅依赖于输入序列中它之前的元素&#…...
介绍 CM3leon,一个更高效、最先进的文本和图像生成模型
近几个月来,随着让机器理解和表达语言的自然语言处理技术以及可根据文本输入生成图像的系统的进步,人们对生成式人工智能模型的兴趣和研究也在加速。今天,我们要展示的是 CM3leon(发音类似于 “变色龙”),它…...
HTTPS和HTTP有哪些区别
两者的主要区别在于安全性和数据加密: 加密层:HTTPS 在HTTP 的基础上增加了SSL/TLS 协议作为加密层,确保数据传输的安全性,即使数据被截获,没有相应的密钥也无法解读数据内容。而HTTP 数据传输是明文的,容易受到攻击。…...
Docker 安装 PostgreSQL
1. 启动 PostgreSQL 容器 docker run --name ffj-postgres -p 5432:5432 -e POSTGRES_PASSWORDCisc0123 -d postgres docker run:启动一个新的容器。--name指定容器名称为 ffj-postgres。-p 5432:5432:将主机的 5432 端口映射到容器的 5432 端口。-e P…...
实践致知第12享:如何新建一个Word并设置格式
一、背景需求 小姑电话说:要新建一个Word文档,并将每段的首行设置空2格。 二、解决方案 1、在电脑桌面上空白地方,点击鼠标右键,在下拉的功能框中选择“DOC文档”或“DOCX文档”都可以,如下图所示。 之后࿰…...
Rust vs Go: 特点与应用场景分析
目录 介绍Rust的特点Go的特点Rust的应用场景Go的应用场景总结 介绍 Rust和Go(Golang)是现代编程语言中两个非常流行的选择。凭借各自的独特优势和广泛的应用场景,吸引了大量开发者的关注。本文将详细介绍Rust和Go的特点,并探讨它…...
2024的开放式耳机排行榜,看这六个耳机选购的小Tips
寻找一款既能聊天又能听歌的耳机并不容易,但是开放式耳机可能会是一个理想的选择。与传统的入耳式耳机相比,开放式耳机可以让你更加自然地与周围环境互动,并且不容易掉落。当然,在市场上选择一款适合自己的开放式耳机也是至关重要…...
JAVA-报表模糊搜索询易实现
背景: 一般文件报表经常会需要搜各个表头对应内容,如果支持全部类型切换搜索,操作起来就不够便捷。而且这个报表是测试自己用的,准确性可以不用太要求,所以更想要那中输入关键字命中任意表记录内容的模糊匹配功能。 方法一:解析搜…...
牛客 7.13 月赛(留 C逆元)
B-最少剩几个?_牛客小白月赛98 (nowcoder.com) 思路 奇数偶数 奇数;奇数*偶数 奇数 所以在既有奇数又有偶数时,两者结合可以同时删除 先分别统计奇数,偶数个数 若偶个数大于奇个数,答案是偶个数-奇个数 若奇个数…...
FPGA之术语
FPGA之术语 IOSTANDARDDIFF_SSTL12:LVCMOS33:sys_clk_p/n:rst_n:UART时钟JTAG:GPIOONFIPCIe IOSTANDARD 在电子工程领域,DIFF_SSTL12和LVCMOS33是两种不同的电气标准,用于定义信号的电压级别和特性。 IOSTANDARD是一个在FPGA(现场可编程门阵…...
WPF透明置顶窗口wine适配穿透问题解决
一、透明窗口全屏时,鼠标不穿透 问题描述 我有一个透明窗口,它是一个全屏置顶窗口,窗口里面有一个工具条,可以通过鼠标拖动工具条的位置,程序启动后,在不点击工具条的时候,鼠标是可以穿透的&a…...
浅析Kafka Streams中KTable.aggregate()方法的使用
KTable.aggregate() 方法是 Apache Kafka Streams API 中用于对流数据进行状态化聚合的核心方法之一。这个方法允许你根据一个键值(通常是<K,V>类型)的流数据,应用一个初始值和一个聚合函数,来累积和更新一个状态࿰…...
java word转pdf、word中关键字位置插入图片 工具类
java word转pdf、word中关键字位置插入图片 工具类 1.pom依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><dependency><groupId>org.apa…...
jail内部ubuntu apt升级失败问题解决
在FreeBSD jail 里安装启动Ubuntu jammy系统,每次装好执行jexec ubjammy sh进入Ubuntu系统后,执行apt update报错。 这个问题困惑了好久,突然有一天仔细去看报错信息,查看了(man 5 apt.conf) ,才搞定问题。简单来说就是…...
迎接AI新时代:GPT-5的技术飞跃与未来展望
引言 随着人工智能技术的迅猛发展,大语言模型在过去几年取得了显著进步。OpenAI最新的声明表明,GPT-5将在一年半后发布,并将带来从高中生智力水平到博士生智力水平的飞跃。这一突破引起了科技界和公众的广泛关注。本文将从技术突破预测、智能…...
Snap Video:用于文本到视频合成的扩展时空变换器
图像生成模型的质量和多功能性的显著提升,研究界开始将其应用于视频生成领域。但是视频内容高度冗余,直接将图像模型技术应用于视频生成可能会降低运动的保真度和视觉质量,并影响可扩展性。来自 Snap 的研究团队及其合作者提出了 "Snap …...
实验8 视图创建与管理实验
一、实验目的 理解视图的概念。掌握创建、更改、删除视图的方法。掌握使用视图来访问数据的方法。 二、实验内容 在job数据库中,有聘任人员信息表:Work_lnfo表,其表结构如下表所示: 其中表中练习数据如下: 1.‘张明…...
C++ 开源库
1 PDFium PDFium 是一个开源的 PDF 渲染和处理库,最初由 Foxit Software 开发,并于2014年捐赠给了 Chromium 项目。PDFium 旨在为各种应用程序提供高效、灵活的 PDF 渲染和操作功能。 2 代码地址 https://github.com/chromium/pdfium 主要特性 渲染…...
LabVIEW滤波器性能研究
为了研究滤波器的滤波性能,采用LabVIEW设计了一套滤波器性能研究系统。该系统通过LabVIEW中的波形生成函数,输出幅值及频率可调的正弦波和白噪声两种信号,并将白噪声与正弦波叠加,再通过滤波器输出纯净的正弦波信号。系统通过FFT&…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
