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

嵌入式学习笔记 - HAL_ADC_ConfigChannel函数解析

贴函数原型:

一 首先配置规则通道序列

其实所有的配置函数都是在对寄存器进行操作,要想看懂Hal库底层函数驱动就先把寄存器如何配置看懂,以下是配置规则通道寄存器的介绍,以ADC_SQR3为例,也就是通道序列1到序列6,可以看出每5位代表一个通道号,依次排列,

再看函数是怎么操作的来实现对这些寄存器位进行填充,如下图:

其中MODIFY_REG(REG, CLEARMASK, SETMASK)的作用是先对寄存器REG中CLEARMASK代表的所有位清零,再用SETMASK对SETMASK代表的位置1,如下图所示,这也是对寄存器某几个位赋值的常用方式,先与非掩码清零相应位,再或上实际设定值。

再看 ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank)的作用,如下图

也就是ADC_SQR3_SQ1 左移(ADC_SQR3_SQ2_Pos * ((_RANKNB_) - 1)) 位,也就是左移ADC_SQR3_SQ2_Pos *(sConfig->Rank-1)位

其中ADC_SQR3_SQ1 最终结果为0x0000001F,也就是每个通道所占寄存器的掩码值

其中ADC_SQR3_SQ2_Pos,HAL库定义为 #define ADC_SQR3_SQ2_Pos   =  (5U)     ,也就是每个通道所占寄存器位数5位,所以最终ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank)的作用也就是 ADC_SQR3_SQ1左移ADC_SQR3_SQ2_Pos *(sConfig->Rank-1)位,也就是如果是配置第sConfig->Rank=6个序列就左移5*(6-1)=25位,就是得出相应序列的寄存器位的掩码,例如第6个序列寄存器位的掩码就是0x3E000000。

最后看ADC_SQR3_RK(sConfig->Channel, sConfig->Rank) ),与上面同一个函数同样的的道理就是sConfig->Channel左移ADC_SQR3_SQ2_Pos *(sConfig->Rank-1)位,sConfig->Channel为实际通道值如通道0x01,那么sConfig->Channel=0x01,也就是如果是配置第sConfig->Rank=6个序列就左移5*(6-1)=25位,就是将0x01左移25位,最终就是得出相应序列寄存器位的实际数值,

就是0x02000000。

最终再来看MODIFY_REG(),就是先与非掩码值,将相应序列的寄存器位置清零,再或上通道实际数值,将相应序列的寄存器位赋值为通道数,其实最终结果就是将通道数赋值给相应的序列寄存器位

从中也可以看出ADC的通道是一个通道一个通道进行配置的,如果有多个通道就需要多次配置,如下是一个通道的配置过程。

二 其次配置采样时间给相应的通道

函数如下,同样可以按照上述方式进行分析,对寄存器赋值的方式是一样的

三 如果通道16或者17被选择,置位CR2寄存器23位

只不过需要注意,HAl库对寄存器位的表示方式,以通道数为例,通道数是5位的,那么hal库就是一位一位的按照bit位表示以及赋值的,

相关文章:

  • 出于PCB设计层面考虑,连排半孔需要注意哪些事项?
  • 构建媲美 ChatGPT 的 AI 交互界面—OpenWebUI
  • Flannel UDP 模式的优缺点
  • WebRTC技术EasyRTC嵌入式音视频通信SDK打造远程实时视频通话监控巡检解决方案
  • JPG与PDF格式转换器
  • 06 mysql之DML
  • R-tree详解
  • 2025年第十六届蓝桥杯大赛软件赛C/C++大学B组题解
  • C++设计模式——单例模式
  • SpringBoot 3.X 开发自己的 Spring Boot Starter 和 SpringBoot 2.x 的区别
  • Python查询ES错误ApiError(406, ‘Content-Type ...is not supported
  • 【传感器多模态融合与AI驱动】
  • Leetcode 3548. Equal Sum Grid Partition II
  • 常见网卡接口命名方式
  • OpenAI for Countries:全球AI基础设施的“技术基建革命”
  • 苍穹外卖--新增菜品
  • 新华三H3CNE网络工程师认证—路由参数与比较
  • Gartner《如何有效融合Data Fabric 与Data Mesh数据战略》学习心得
  • DeepBook 与 CEX 的不同
  • github 上的 CI/CD 的尝试
  • 多个侵华日军细菌战部队留守名簿文件首次公布
  • 4台肺癌手术,2名“90后”患者,这届年轻人的肺怎么了?
  • 台行政机构网站删除“汉人”改为“其余人口”,国台办回应
  • 人民日报任平:从汽车产销、外贸大盘看中国经济前景
  • 优化营商环境,服务上海“五个中心”建设,北外滩有何举措?
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?