STM32F407寄存器操作(ADC非连续扫描模式)

1.前言

书接上回,在看手册的时候我突然发现手册上还描述了另一种ADC扫描模式,即非连续扫描模式,想着连续扫描模式都已经探索过了,那就顺手把非非连续模式研究一下吧。

2.理论

我们先看看手册,这里我就以规则通道举例了

首先,我们先了解一下什么是非连续模式,这里的非连续模式指的是不在同一个周期内将所有管脚的电压全部读取完毕。手册上也给出了例子,也是比较好理解的。

然后我们再看看需要置为的寄存器,是CR1里的DISCEN和DISCNUM几位,我们看到CR1里

分别是11位,13~15位

3.程序

我先把程序放出来,这里我用的通道0、3、4、5四个通道,每次采样2个通道。

void init_adc1(unsigned char ch1,unsigned char adcm)
{init_adc12_chinal(0);	//初始化通道0init_adc12_chinal(3);	//初始化通道3init_adc12_chinal(4);	//初始化通道4init_adc12_chinal(5);	//初始化通道5ADC1->CR1&=~(3<<24);	//15 ADCCLK 周期ADC1->CR1|=(1<<8);		//扫描模式ADC1->CR1|=1<<11;			//ADC1非连续扫描模式ADC1->CR1|=1<<13;			//不连续采样通道数为2ADC1->CR2&=~(1<<1);		//单次转换ADC1->CR2&=~(1<<11);	//数据右对齐ADC1->CR2&=~(3<<28);	//禁止触发检测ADC1->SQR1&=~(0XF<<20);	//重置规则通道序重置列长度ADC1->SQR1|=3<<20;     	//4个转换在规则序列中//设置通道0的采样时间ADC1->SMPR2&=~(7<<(3*0));		//通道0	采样时间清空	  ADC1->SMPR2|=(7<<(3*0)); 		//通道0  480个周期,提高采样时间可以提高精确度//设置通道3的采样时间ADC1->SMPR2&=~(7<<(3*3));		//通道3	采样时间清空	  ADC1->SMPR2|=(7<<(3*3)); 		//通道3  480个周期,提高采样时间可以提高精确度//设置通道4的采样时间ADC1->SMPR2&=~(7<<(3*4));		//通道4	采样时间清空	  ADC1->SMPR2|=(7<<(3*4)); 		//通道4  480个周期,提高采样时间可以提高精确度//设置通道5的采样时间ADC1->SMPR2&=~(7<<(3*5));		//通道5	采样时间清空	  ADC1->SMPR2|=(7<<(3*5)); 		//通道5  480个周期,提高采样时间可以提高精确度ADC1->SQR3=0;	//重置规则通道转换配置ADC1->SQR3|=0<<0;	//设置第一次规则转换通道0ADC1->SQR3|=3<<5;	//设置第二次规则转换通道3ADC1->SQR3|=4<<10;	//设置第三次规则转换通道4ADC1->SQR3|=5<<15;	//设置第四次规则转换通道5ADC1->CR2|=1<<8;			//使能DMA模式ADC1->CR2|=1<<0;	   	//开启AD转换器	  
}

因此我们把CR1的11位置1开启非连续扫描模式,11~15位写2,表示单次采集2个通道。

同时我们的转换通道数要配置成4

然后是转换顺序,因为我们需要多次手动触发,因此在初始化阶段将转换顺序配置好即可

然后是软件触发的程序

void adc1_incontinue_scanf()
{ADC1->CR2|=1<<30;	//开始转换
}

因为单个循环转换完毕后没有事件生成,因此我们这里不做判断。理论上来说我们的转换时间也应该不是连续的,否则就用连续模式了。

4.测试

首先是主程序,按照DMA-ADC初始化顺序即可,这里我在两次扫描间加入10ms的延迟防止干扰。

int main(void)
{	Stm32_Clock_Init(336,25,2,7);//设置时钟,168MhzNVIC_SetGroup(1);//设置中断分组,分组1init_PinClock();//初始化所有时钟delay_init(168);//初始化延时init_DMAClock();//初始化DMA时钟init_DMA2_S0C0(4);	//DMA2 ADC1转换init_AllAdc();//初始化所有ADC时钟init_adc1(0,2);//初始化ADC1adc1_incontinue_scanf();//第一次扫描delay_ms(10);adc1_incontinue_scanf();//第二次扫描}

首先我们先测试是否是两次转换

程序停在两次延迟处,四个数据中前两位正常有数据了

两次触发完毕后四位数据正常了。

然后测试通道是否正常,有没有发生串扰

首先把PA4接地

第三个数据确实是0

然后我们再把PA3接地

OK,也没问题,第二个数据也是0了

5.结语

非连续扫描模式也不算难,可以说扫描模式顺带功能吧。那么OK,还是老样子,有问题评论区见,下篇文章我将介绍407多重ADC的使用方法。

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

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

相关文章

spring切面

概念 两个特点&#xff1a; IOC控制反转AOP主要用来处理公共的代码 例如一个案例就是添加用户&#xff0c;重复的代码包含了记录日志、事务提交和事务回滚等&#xff0c;都是重复的&#xff0c;为了简单&#xff0c;交给AOP来做。 即将复杂的需求分解出不同方面&#xff0c…

[Python] Python中的多重继承

文章目录 Lora中的例子 Lora中的例子 https://github.com/michaelnny/QLoRA-LLM/blob/main/qlora_llm/models/lora.py#L211C1-L243C10如果继承两个父类&#xff0c;并且父类的__init__参数不一样&#xff0c;则可以显式的调用父类init&#xff1b;如果用super().__init__()则需…

rsync服务的搭建

目录 一、rsync介绍 rsync的安装 二、rsync的语法 三、rsync命令使用 1. 本机同步 2. 远程同步 四、rsync作为服务使用 1、尝试启动rsync程序 2、rsync的配置文件介绍 注意事项&#xff1a; 3. rsyncinotify实时同步 3.依赖服务托管xinetd&#xff08;CentOS 6中rs…

【C/C++】面试基础题目收集

C 软件开发面试中常见的刷题题目通常可分为以下几大类&#xff1a;数据结构与算法、系统编程、面向对象设计、C 语言特性、并发编程等。 &#x1f9e0; 一、数据结构与算法&#xff08;力扣/牛客经典题&#xff09; 掌握 STL 和底层结构实现能力&#xff1a; &#x1f4cc; 数…

将手机网络经USB数据线和本地局域网共享给华为AP6050DN无线接入点

引言 由于最近装毕的新家所在的小区未能及时通宽带,于是家中各类无线设备如何上网就成了首要要解决的问题。 鉴于家中要联网的设备多、类型杂、支持频段也不一,总是开手机热点不是回事儿,于是就想着把手机网络引至华为AP6050DN无线接入点中,让家中所有的无线设备都能快速高…

【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​

深度优先搜索 导读&#xff1a;从广度到深度&#xff0c;探索图的遍历奥秘一、深度优先搜索二、算法思路三、算法逻辑四、算法评价五、深度优先生成树六、有向图与无向图结语&#xff1a;深潜与回溯&#xff0c;揭开图论世界的另一面 导读&#xff1a;从广度到深度&#xff0c;…

Flink CEP实践总结:使用方法、常见报错、优化与难点应对

Flink CEP实践总结&#xff1a;使用方法、常见报错、优化与难点应对 随着实时数据分析需求的提升&#xff0c;Flink CEP&#xff08;Complex Event Processing&#xff0c;复杂事件处理&#xff09;成为事件流检测中的利器。本文结合实际项目经验&#xff0c;总结Flink CEP的基…

Python数据类型详解:从字符串到布尔值,一网打尽

Python是现代编程语言中非常流行的一种&#xff0c;它的语法简洁、易懂&#xff0c;非常适合初学者。而在Python编程中&#xff0c;“数据类型”是最基础也是最重要的概念。理解这个概念&#xff0c;将为你之后的编程打下坚实的基础。 1. 什么是数据类型&#xff1f; 在Pytho…

python打卡day42

Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 在深度学习中&#xff0c;我们经常需要查看或修改模型中间层的输出或梯度&#xff0c;但标准的前向传播和反向传播过程通常是一个黑盒&#xff0c;很难直接访问中间层的信息。PyT…

中国风展示工作总结商务通用PPT模版

中国风展示工作总结商务通用PPT模版&#xff1a;中国风商务通用PPT 模版https://pan.quark.cn/s/42ad18c010d4

TeleAI发布TeleChat2.5及T1正式版,双双开源上线魔乐社区!

5月12日&#xff0c;中国电信开源TeleChat系列四个模型&#xff0c;涵盖复杂推理和通用问答的多个尺寸模型&#xff0c;包括TeleChat-T1-35B、TeleChat-T1-115B、TeleChat2.5-35B和TeleChat2.5-115B&#xff0c;实测模型性能均有显著的性能效果。TeleChat系列模型基于昇思MindS…

机器视觉2D定位引导一般步骤

机器视觉的2D定位引导是工业自动化中的核心应用,主要用于精确确定目标物体的位置(X, Y坐标)和角度(旋转角度θ),并引导机器人或运动机构进行抓取、装配、对位、检测等操作。其一般步骤可概括如下: 一、系统规划与硬件选型 明确需求: 定位精度要求(多少毫米/像素,多少…

儿童节快乐,聊聊数字的规律和同余原理

某年的6月1日是星期日。那么&#xff0c;同一年的6月30日是星期几&#xff1f; 星期是7天一个循环。所以说&#xff0c;这一天是星期几&#xff0c;7天之后同样也是星期几。而6月30日是在6月1日的29天之后&#xff1a;29 7 4 ... 1用29除以7&#xff0c;可以得出余数为1。而…

最佳实践|互联网行业软件供应链安全建设的SCA纵深实践方案

在数字化转型的浪潮中&#xff0c;开源组件已成为企业构建云服务与应用的基石&#xff0c;但其引入的安全风险也日益凸显。某互联网大厂的核心安全研究团队&#xff0c;通过深度应用软件成分分析&#xff08;SCA&#xff09;技术&#xff0c;构建了一套覆盖开源组件全生命周期管…

Docker Compose(容器编排)

目录 什么是 Docker Compose Docker Compose 的功能 Docker Compose 使用场景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; Docker Compose 命令清单 常见命令说明 操作案例 总结 什么是 Docker Compose docker-compose 是 Docker 官方的开源项…

【网络安全】轻量敏感路径扫描工具

订阅专栏,获取文末项目源码。 文章目录 工具简介工具特点项目结构使用方法1.环境准备2.配置目标URL3.运行扫描4.结果查看5.自定义扩展项目源码工具简介 该工具是一款基于Python的异步敏感路径扫描工具,用于检测目标网站是否存在敏感文件或路径泄露(如配置文件、密钥、版本控…

SpringAI+DeepSeek大模型应用开发实战

内容来自黑马程序员 这里写目录标题 认识AI和大模型大模型应用开发模型部署方案对比模型部署-云服务模型部署-本地部署调用大模型什么是大模型应用传统应用和大模型应用大模型应用 大模型应用开发技术架构 SpringAI对话机器人快速入门会话日志会话记忆 认识AI和大模型 AI的发…

高温炉制造企业Odoo ERP实施规划与深度分析报告

摘要 本报告旨在为高温炉生产企业提供一个基于Odoo 18平台的企业资源规划&#xff08;ERP&#xff09;系统实施的全面分析与规划。报告首先系统梳理了高温炉制造业独特的业务流程特点&#xff0c;随后详细映射了Odoo 18各核心模块功能与这些业务需求的匹配程度。重点分析了生产…

简述什么是全局锁?它的应用场景有哪些?

全局锁是数据库管理系统中的一种特殊锁机制&#xff0c;用于对整个数据库实例进行加锁&#xff0c;使数据库处于只读状态&#xff0c;阻止所有数据更新&#xff08;DML&#xff09;、数据定义&#xff08;DDL&#xff09;及更新类事务提交等操作。 其核心应用场景包括&#xf…

window 显示驱动开发-呈现开销改进(二)

对共享表面的纹理格式支持 驱动程序应支持共享资源和可共享的后台缓冲区&#xff0c;以使用 DXGI_FORMAT 枚举中的这些附加纹理格式&#xff1a; DXGI_FORMAT_A8_UNORMDXGI_FORMAT_R8_UNORMDXGI_FORMAT_R8G8_UNORMDXGI_FORMAT_BC1_TYPELESS\*DXGI_FORMAT_BC1_UNORMDXGI_FORMAT…