第33讲:实战——ADC采集、电压采样快速代码生成

发布时间:2026/7/23 19:00:55

第33讲:实战——ADC采集、电压采样快速代码生成
CSDN专栏嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料第33讲实战——ADC采集、电压采样快速代码生成一、ADC基础ADC模数转换器是模拟量采集的核心用于读取传感器模拟信号、电压采样等。1.1 ADC配置要点基本参数分辨率12位STM32F103采样时间影响精度触发方式软件触发、定时器触发转换模式单次、连续、扫描通道配置ADC1通道通道0PA0通道1PA1通道2PA2通道3PA3通道4PA4通道5PA5通道6PA6通道7PA7二、单通道ADC采集2.1 基础采集Prompt生成STM32F103 ADC采集代码 - ADC1通道0PA0 - 功能采集电压值 - 使用HAL库AI生成#includestm32f1xx_hal.hADC_HandleTypeDef hadc1;voidADC1_Init(void){hadc1.InstanceADC1;hadc1.Init.ScanConvModeADC_SCAN_DISABLE;hadc1.Init.ContinuousConvModeDISABLE;hadc1.Init.ExternalTrigConvADC_SOFTWARE_START;hadc1.Init.DataAlignADC_DATAALIGN_RIGHT;hadc1.Init.NbrOfConversion1;HAL_ADC_Init(hadc1);// 配置通道ADC_ChannelConfTypeDef sConfig{0};sConfig.ChannelADC_CHANNEL_0;sConfig.RankADC_REGULAR_RANK_1;sConfig.SamplingTimeADC_SAMPLETIME_55CYCLES_5;HAL_ADC_ConfigChannel(hadc1,sConfig);}uint16_tADC_Read(void){HAL_ADC_Start(hadc1);HAL_ADC_PollForConversion(hadc1,100);uint16_tvalueHAL_ADC_GetValue(hadc1);HAL_ADC_Stop(hadc1);returnvalue;}floatADC_ReadVoltage(void){uint16_trawADC_Read();floatvoltage(float)raw*3.3f/4095.0f;returnvoltage;}intmain(void){HAL_Init();SystemClock_Config();ADC1_Init();UART_Init();while(1){floatvoltageADC_ReadVoltage();printf(Voltage: %.2fV\r\n,voltage);HAL_Delay(100);}}2.2 多次采样滤波平均值滤波#defineSAMPLE_COUNT10uint16_tADC_ReadFiltered(void){uint32_tsum0;for(uint8_ti0;iSAMPLE_COUNT;i){sumADC_Read();}returnsum/SAMPLE_COUNT;}中值滤波#defineMEDIAN_COUNT5uint16_tADC_ReadMedian(void){uint16_tvalues[MEDIAN_COUNT];for(uint8_ti0;iMEDIAN_COUNT;i){values[i]ADC_Read();}// 排序for(uint8_ti0;iMEDIAN_COUNT-1;i){for(uint8_tji1;jMEDIAN_COUNT;j){if(values[i]values[j]){uint16_ttempvalues[i];values[i]values[j];values[j]temp;}}}returnvalues[MEDIAN_COUNT/2];}三、多通道ADC采集3.1 扫描模式Prompt生成STM32F103 多通道ADC采集代码 - ADC1通道0-3PA0-PA3 - 功能采集4路电压 - 使用DMA传输 - 使用HAL库AI生成#defineADC_CHANNELS4uint16_tadcBuffer[ADC_CHANNELS];voidADC1_Multi_Init(void){hadc1.InstanceADC1;hadc1.Init.ScanConvModeADC_SCAN_ENABLE;// 扫描模式hadc1.Init.ContinuousConvModeENABLE;// 连续转换hadc1.Init.ExternalTrigConvADC_SOFTWARE_START;hadc1.Init.DataAlignADC_DATAALIGN_RIGHT;hadc1.Init.NbrOfConversionADC_CHANNELS;HAL_ADC_Init(hadc1);// 配置各通道ADC_ChannelConfTypeDef sConfig{0};sConfig.ChannelADC_CHANNEL_0;sConfig.RankADC_REGULAR_RANK_1;sConfig.SamplingTimeADC_SAMPLETIME_55CYCLES_5;HAL_ADC_ConfigChannel(hadc1,sConfig);sConfig.ChannelADC_CHANNEL_1;sConfig.RankADC_REGULAR_RANK_2;HAL_ADC_ConfigChannel(hadc1,sConfig);sConfig.ChannelADC_CHANNEL_2;sConfig.RankADC_REGULAR_RANK_3;HAL_ADC_ConfigChannel(hadc1,sConfig);sConfig.ChannelADC_CHANNEL_3;sConfig.RankADC_REGULAR_RANK_4;HAL_ADC_ConfigChannel(hadc1,sConfig);// 启动DMAHAL_ADC_Start_DMA(hadc1,(uint32_t*)adcBuffer,ADC_CHANNELS);}floatADC_GetVoltage(uint8_tchannel){if(channelADC_CHANNELS)return0.0f;return(float)adcBuffer[channel]*3.3f/4095.0f;}四、典型应用场景4.1 电压监测需求监测电池电压低于阈值报警代码#defineBATTERY_LOW_THRESHOLD3.3fvoidBattery_Monitor(void){floatvoltageADC_ReadVoltage();printf(Battery: %.2fV\r\n,voltage);if(voltageBATTERY_LOW_THRESHOLD){printf(Warning: Battery low!\r\n);// 报警}}4.2 温度采集NTC热敏电阻需求使用NTC热敏电阻测量温度代码// NTC参数#defineNTC_R2510000.0f// 25°C时的电阻10kΩ#defineNTC_BETA3950.0f// B值#defineNTC_R_REF10000.0f// 参考电阻10kΩfloatNTC_ReadTemperature(void){uint16_trawADC_Read();// 计算NTC电阻floatr_ntc(float)raw*NTC_R_REF/(4095.0f-raw);// 计算温度B值方程floattempK1.0f/(1.0f/298.15flog(r_ntc/NTC_R25)/NTC_BETA);floattempCtempK-273.15f;returntempC;}4.3 光照采集需求使用光敏电阻测量光照强度代码floatLight_ReadIntensity(void){uint16_trawADC_Read();// 转换为光照强度简化// 实际需要根据光敏电阻特性曲线计算floatintensity(float)raw/4095.0f*100.0f;// 0-100%returnintensity;}五、本讲核心要点6.1 记住这三句话ADC配置分辨率、采样时间、触发方式、转换模式数据滤波平均值滤波、中值滤波提高精度典型应用电压监测、温度采集、光照采集6.2 下讲预告第34讲将深入讲解实战PWM输出调速、控灯原型开发PWM是电机控制、LED调光的基础如何快速生成PWM代码下一讲将详细讲解。

相关新闻

做项目管理一定要用专业软件吗?

做项目管理一定要用专业软件吗?

2026/7/23 19:00:55

大家好,我是陈哥。 做项目管理是不是必须要用软件? 每次听到这个问题,我都会说:项目管理的核心是人和流程。不用任何管理软件,肯定是能做项目管理的。但是,适配的项目管理软件会让你更轻松。一、纯人工管理…

第32讲:实战——I2C传感器极简驱动快速验证

第32讲:实战——I2C传感器极简驱动快速验证

2026/7/23 19:00:55

CSDN专栏: 嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料 第32讲:实战——I2C传感器极简驱动快速验证 一、I2C传感器驱动基础 I2C是最常用的传感器接口,快速验证I2C传感器驱动是嵌入式开发的基本功。 1.…

第31讲:实战——SPI屏驱动快速试错、点亮屏幕

第31讲:实战——SPI屏驱动快速试错、点亮屏幕

2026/7/23 19:00:55

CSDN专栏: 嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料 第31讲:实战——SPI屏驱动快速试错、点亮屏幕 一、SPI屏幕驱动基础 SPI屏幕是嵌入式常见的显示设备,驱动屏幕需要正确配置SPI、理解屏幕控制命令…

汽车充电插口识别数据集,可识别快充,慢充插口,支持yolo,coco json,pascal voc xml格式的标注数据集

汽车充电插口识别数据集,可识别快充,慢充插口,支持yolo,coco json,pascal voc xml格式的标注数据集

2026/7/23 19:50:56

汽车充电插口识别数据集 本数据集专门用于训练和评估汽车充电插口识别模型,包含快充(Fast Charging)和慢充(Slow Charging)两种插口类型。数据集支持多种主流目标检测框架,包括 YOLO 系列(v5、…

软路由集成ADGuard家庭防护实战部署

软路由集成ADGuard家庭防护实战部署

2026/7/23 19:50:56

用软路由打造家庭网络“免疫系统”:ADGuard实战部署全记录 最近家里智能设备越来越多,电视弹广告、平板自动下载推广App、孩子刷视频莫名其妙跳转到不良网站……这些烦心事让我下定决心:不能再靠普通路由器糊弄了。必须上点硬货。 于是我把一台闲置的Intel NUC拿出来刷成软…

医疗设备防漏费管理系统 医院医疗设备漏费管理系统2026版

医疗设备防漏费管理系统 医院医疗设备漏费管理系统2026版

2026/7/23 19:50:56

从“一刀切”到“千人千面”:控费逻辑的根本颠覆传统医疗设备控费系统如同一位严厉的会计,只会说“不”——设定使用限额、限制开机时长、设置审批关卡。这种粗放管理模式常陷入两难:控费严格了,可能影响临床效果;放松…

软路由怎么搭建:千兆内网优化硬件搭配建议

软路由怎么搭建:千兆内网优化硬件搭配建议

2026/7/23 19:50:56

软路由怎么搭建?千兆内网下的硬件选型实战指南 你是不是也遇到过这种情况:家里设备一多,Wi-Fi就卡顿;看个4K视频老是转圈;孩子上网课突然掉线……传统路由器明明标着“千兆”,实际体验却像百兆。问题出在哪? 答案可能是——你的网络大脑该升级了。 在今天的家庭和小型…

二分查找(基础)

二分查找(基础)

2026/7/23 19:50:56

思路&#xff1a;准备一组有序的数组设置target设置i0 &#xff0c;j 数组.length - 1;循环&#xff08;i<j&#xff09;设置中间值m (m (ij)/2 ,向下取整)&#xff0c;做if&#xff08;a[m] > target&#xff09;-> j m-1 else if (a[m] < target) ->…

Python计算机毕设之基于 Python 的期货行情展示与模拟交易系统 零基础期货实训虚拟交易平台设计(完整前后端代码+说明文档+LW,调试定制等)

Python计算机毕设之基于 Python 的期货行情展示与模拟交易系统 零基础期货实训虚拟交易平台设计(完整前后端代码+说明文档+LW,调试定制等)

2026/7/23 19:40:56

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/23 3:40:08

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/23 4:40:05

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵&#xff08;连锁便利店/商超标准配置&#xff09; 自助收银Kiosk一体机&#xff1a;顾客结算、自助核销优惠券、商品素材预览&#xff1b;运营折叠平板&#xff1a;店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似&#xff0c;可以采用类似判断方法------------其实他比小红书好判断&#xff0c;因为他没有图片&#xff0c;控件位置几乎是固定的&#xff0c;都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的&#xff0c;所以我就…

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

2026/7/23 0:09:56

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;企业级AI搜索落地选型实战手册&#xff08;含LLMRAGHybrid架构对比矩阵与ROI测算模板&#xff09; 企业级AI搜索系统落地成败&#xff0c;核心在于技术选型与业务价值的精准对齐。盲目堆砌大模型能力或过度依赖…

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

2026/7/23 0:09:56

1. 项目概述与核心价值在嵌入式系统开发&#xff0c;尤其是基于ARM Cortex-M内核的微控制器项目中&#xff0c;深入理解并熟练配置芯片的片上外设&#xff0c;是从“点亮LED”迈向“实现复杂系统功能”的关键一步。Tiva™ TM4C129LNCZAD作为TI公司Cortex-M4F家族中的高性能成员…

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

2026/7/23 0:09:56

一、快速声明与争议背景本文是对 AtomCode 终端 spinner 时长显示 fmt_dur 相关说法的事实性核验。2026 年 7 月 CSDN 上出现两篇互相矛盾的博文&#xff0c;近期又有 AI 在对话中输出格式描述 XhYm / YmZs / Zs。本文基于 AtomCode 仓库 main4677ddfa 及全分支 Git 历史给出可…