ADC数模转换器
📅 2026/7/13 22:22:32
👁️ 次浏览
ADC简介ADC采样量化编码EOC:结束转换信号START:开始转换给一个输入脉冲开始转换CLOCK:是ADC时钟这是一种不断进行二分比较最终确定电压值的方法。例如这里高位先行如果输入的是一个0.9V的电压那么如果DAC将第一位置1即20481.65V进行比较发现比0.9V大所以第一位置0接着如果第二位置1即10240.825V进行比较发现比0.9V小所以第二位置1接着第三位…以此类推最终填满12位。这就是12位逐渐逼近行ADC。配置ADC的结构:本节暂时不会用到看门狗和中断输出控制等部分 本节演示的是软件触发、规则组单次转换、非扫描模式的ADC转换。这里规则组是可以输入16个数据但可以看到AD数据寄存器中规则组结果只有一个所以只能放一个数据如果输入16个数据那么前15个数据就会被覆盖掉所以这里可以配合使用DMA数据转运使用。输入通道由于该芯片只有10个外部输入通道所以只有通道0到通道9这10个引脚可用于输入模拟量。初始化配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//ADC都是挂载在APB2总线上RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置ADC时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//选择6分频 ADC时钟最大频率为14MHzGPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_ModeGPIO_Mode_AIN;//选择模拟输入模式 ADC专属GPIO_InitStructure.GPIO_PinGPIO_Pin_0;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStructure);//配置ADC规则通道组参数分别是选择ADCACD指定通道序列位置指定通道采样时间ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);//初始化ADCADC_InitTypeDef ADC_InitStructure;ADC_InitStructure.ADC_ModeADC_Mode_Independent;//选择独立模式还是双ADC模式ADC_InitStructure.ADC_DataAlignADC_DataAlign_Right;//选择数据对齐方式ADC_InitStructure.ADC_ExternalTrigConvADC_ExternalTrigConv_None;//外部触发转换选择(触发控制的触发源选择)ADC_InitStructure.ADC_ContinuousConvModeDISABLE;//选择单次转换ADC_InitStructure.ADC_ScanConvModeDISABLE;//选择非扫描模式ADC_InitStructure.ADC_NbrOfChannel1;//选择通道数目(1~16)ADC_Init(ADC1,ADC_InitStructure);//上电ADCADC_Cmd(ADC1,ENABLE);//对ADC进行校准ADC_ResetCalibration(ADC1);//这里会将复位校准状态标志位置1while(ADC_GetResetCalibrationStatus(ADC1));//获取复位校准状态复位校准完后状态位标志为0跳出循环ADC_StartCalibration(ADC1);//开始校准while(ADC_GetCalibrationStatus(ADC1));//等待校准完成注意我们这里选择的是软件触发所以还要调用ADC_SoftwareStartConvCmd函数才能转换数据每调用一次这函数就触发一次ADC转换。由上图可知ADC_RegularChannelConfig是配置ADC规则通道组的因为GPIO口选择P0口所以ADC通道选择通道0其中第三个参数的序列如下图由图可知我们选择的是单次转换非扫描模式所以每次将转换数据放到数据寄存器中后还要再触发一次才能进行下一次转换。最后根据手册建议我们还要对ADC进行校准减少误差。接下来如果需要读取转换数据可以调用下面函数uint16_tADC_GetValue(uint8_tADC_Channel){ADC_RegularChannelConfig(ADC1,ADC_Channel,1,ADC_SampleTime_55Cycles5);//设置指定的ADC规则组通道设置它们的转换数据和采样时间ADC_SoftwareStartConvCmd(ADC1,ENABLE);//调用软件触发while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)RESET);//转换完成会置EOC标志位所以这里等待标志位returnADC_GetConversionValue(ADC1);//读取数据}由图可知我们调用 ADC_GetConversionValue函数时就是读取ADC_DR的值所以不用再手动对EOC清零。连续扫描非扫描模式如果想选择连续转换非扫描模式只需要将模板里的ADC_InitStructure.ADC_ContinuousConvModeDISABLE;//选择单次转换改为ENABLE就是选择连续转换模式了。这里与单次转换非扫描模式不同的是它在一次转换完成后不会停止下来而是进行下一次转换然后一直持续下去所以只要手动触发一次它就能一直转换下去想要读ADC值时直接从数据寄存器读取就行了。常用函数RCC_ADCCLKConfig配置ADCCLK分频器ADC_SoftwareStartConvCmd软件触发ADC_GetFlagStatus获取标志位状态判断EOCADC_RegularChannelConfig规则组通道配置ADC_ExternalTrigConvCmd外部触发转换控制就是是否允许外部触发转换ADC_GetConversionValueADC获取转换值
最近一段时间,我越来越少担心 AI 会不会写代码。
真正让我不太放心的,是它写完代码之后那段过于熟练的总结: 已完成重构 已运行测试,全部通过 修改范围符合要求 没有影响其他功能 如果只是让 AI 写一个一次性脚本,我可…
📅 2026/7/13 22:22:32
很多人觉得重装系统是个技术活,尤其是Win10家庭版用户,担心操作复杂、数据丢失。其实只要掌握正确方法,几分钟就能搞定,而且比找外面的人更安全可控。我帮人处理过不少系统问题,发现90%的卡顿、蓝屏、软件冲突…
📅 2026/7/13 22:22:32
按人群先给建议
针对研究生做论文访谈的mp4转文字需求,2026年三款工具各适配不同场景,没有万能选项,不需要追求单一排名:纯长音频逐字转写、免费额度充足的需求优先选通义听悟,转写后需要直接生成结构化访谈摘要适配论…
📅 2026/7/13 22:22:32
3步掌握Wand-Enhancer:解锁Wand专业版功能的终极本地化方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer
还在为Wand(原W…
📅 2026/7/13 23:10:51
1. 项目概述:为什么我们需要volatile?在C的世界里,我们写代码时总希望编译器能足够“聪明”,帮我们优化掉那些看似冗余的操作,比如反复读取一个看似不变的变量。这通常是个好习惯,能显著提升性能。但有一种…
📅 2026/7/13 23:10:51
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/13 23:10:51
1. 先搞清楚 GPT image2 提示词到底解决什么问题 如果你正在找能直接复制粘贴、马上就能在图像生成工具里用的提示词,那 GPT image2 提示词分享这个主题就值得继续往下看。这类分享的核心价值不是教你从零写提示词,而是给你一批经过验证、能跑出具体风格…
📅 2026/7/13 23:10:51
ROS Melodic 下三种CAN通信架构深度对比:从厂商SDK到SocketCAN与CANopen在机器人开发领域,控制器局域网(CAN)总线因其高可靠性和实时性成为硬件通信的首选方案之一。当我们将CAN设备集成到ROS生态时,开发者面临多种架构…
📅 2026/7/13 23:10:51
刚装完 Win11 那会儿,系统流畅得让人感动。可用了小半年,开机从 10 秒变成一分钟,开个浏览器都能卡成幻灯片,风扇还动不动就狂转——这场景是不是很熟悉?很多人第一反应是重装系统。确实,重装能解决大部分问…
📅 2026/7/13 23:09:51
做技术的人都知道,环境配置是最让人头秃的环节。特别是当你面对一个相对小众或者刚起步的项目时,文档可能不全,社区可能冷清。这时候,找到靠谱的来源就显得尤为重要。今天咱们不聊虚的,就聊聊怎么稳妥地完成 openclaw安装官方 流程,顺便分享几个我踩过的坑,希望能帮你省…
📅 2026/7/13 0:01:22
1. 项目概述:当火焰特效成为帧率杀手在UE5项目里,尤其是那些追求电影级视觉的开放世界或者大场景战斗游戏,一个熊熊燃烧的篝火、一次震撼的爆炸,往往是点燃玩家情绪的关键。Niagara作为虚幻引擎5中取代了老旧的Cascade的下一代粒子…
📅 2026/7/13 0:01:52
1. 项目概述与核心价值 最近在对接抖音小游戏平台时,侧边栏复访功能成了一个绕不开的“必答题”。很多开发者朋友,包括我自己一开始,都对这个功能有点摸不着头脑:它到底是什么?为什么平台这么重视?不接入行…
📅 2026/7/13 0:01:52
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/13 5:30:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/13 6:21:22
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/13 7:10:30
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/13 3:29:47
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/13 19:47:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/13 9:07:16