当前位置: 首页 > news >正文

关于使用HAL_ADC_Start函数时为什么要放在while里的解释

HAL_ADC_Start() 是一个用于启动 ADC(模数转换器)转换的函数,那为什么有时候我们会看到它被放在 while 循环里呢?其实取决于你使用的是哪种ADC采样方式,我们来细说👇:


🧠 一、先搞清楚你是哪种采样方式

STM32 HAL 提供的 ADC 工作方式主要有这几种:

模式是否自动连续转换?是否需要每次手动 HAL_ADC_Start()
1. 单次转换(Single Conversion)❌ 否✅ 是,必须每次调用
2. 连续转换(Continuous Conversion)✅ 是❌ 否,只需启动一次
3. 扫描+DMA(Scan + DMA)✅ 是❌ 否,只需启动一次
4. 触发模式(Timer触发、EXTI触发等)❌ 或 ✅取决于触发机制

🧪 二、HAL_ADC_Start() 放在 while 里的意义

✅ 如果你写的是这种代码:
while (1)
{
    HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
    uint32_t adc_value = HAL_ADC_GetValue(&hadc1);
    HAL_Delay(100);
}

这表示你是每次循环手动触发一次ADC采样,即处于 “单次转换模式”,每一次 HAL_ADC_Start() 都会启动一次新的采样。

这种方式适合你:

  • 不需要太快的采样速率

  • 想手动控制采样频率(如每100ms采一次)


❌ 如果你已经开启了连续转换模式:
ADC_InitStruct.ContinuousConvMode = ENABLE;

那你只需要在 main() 里调用一次 HAL_ADC_Start()

HAL_ADC_Start(&hadc1);

while (1)
{
    if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK)
    {
        adc_val = HAL_ADC_GetValue(&hadc1);
    }
}

就不需要每次循环都调用 HAL_ADC_Start() 了。


🛠️ 三、实战建议

👉 如果你看到别人把 HAL_ADC_Start() 写进 while 里,说明:
  • 他们用的是“手动单次触发”模式;

  • 这样可以节省功耗;

  • 也能避免 ADC 占满总线或 DMA 通道。


✅ 总结一句话:

HAL_ADC_Start() 放在 while 里,通常是因为你在用 单次转换模式,每次都要手动启动一次采样。如果你用的是 连续转换DMA 模式,就不需要反复调用它了。


你用的是哪种采样方式?我可以直接帮你写一段对应方式的初始化和采样代码~

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

相关文章:

  • CSS语言的网络编程
  • 使用私有知识库取消歧义思考
  • 云轴科技ZStack CTO王为@中国GenAI大会:AI原生实践重构AI Infra新范式
  • 简洁的 PlantUML 入门教程
  • indexedDB前端数据库存储使用
  • d202546
  • Java项目集成大模型(通译千问)
  • Python星球日记 - 第3天:运算符与表达式
  • 内存与显存:从同根生到殊途异路的科技演进
  • 机器学习新范式:Kubernetes + Kubeflow,解锁模型训练与部署的高效密码
  • Word 页眉设置(不同章节不同页眉)
  • 迭代器介绍与使用(四十一)
  • java 正则表达式优化
  • 使用SPSS进行链式中介模型分析
  • ansible可视化自动化平台-semaphore
  • 脑电学习笔记
  • 哈希表(闭散列)的实现
  • 匿名函数自调用
  • Draw.io 全面解析与竞品分析:图表绘制工具的深度对比
  • 这是一份简单优雅的Prompt Engineering教程
  • 25.4.6学习总结
  • C++ 中为什么构造函数不需要实现虚函数,而析构函数需要?
  • 线程同步的学习与应用
  • 设计模式简述(八)中介者模式
  • 从扩展黎曼泽塔函数构造物质和时空的结构-15
  • swift-11-init、deinit、可选链、协议、元类型
  • STM32F103C8T6单片机的起始点:使用GPIO输出点亮我们的第一个小灯(HAL库版本)
  • 【简历全景认知】简历的历史演变与当代定位:从羊皮卷到算法博弈的艺术
  • 设计模式简述(十)责任链模式
  • 请问你怎么看待测试,指导哪些测试的类型,有用过哪些测试方法?