评测常用 ADC 初始化与控制函数
小华官方库采用 结构体配置 + 启动函数组合 的设计方式,ADC 相关函数主要分为以下几类:函数分类 示例函数
初始化配置 ADC_Init()、ADC_ChCfg()、ADC_SeqChCmd()
启动控制 ADC_Start()、ADC_Stop()
数据读取 ADC_GetValue()、ADC_GetResult()
状态查询 ADC_GetStatus()
中断控制 ADC_IntCmd()、ADC_IrqHandler()
DMA支持 ADC_DmaCmd()
触发配置 ADC_SetTriggerSrc()、ADC_TriggerCmd()
推荐组合:结构化初始化 + 多通道采样 + 轮询读取
c
复制
编辑
ADC_Init() // 初始化ADC模块(含工作模式、重复模式等)
ADC_SeqChCmd() // 启用序列通道(支持多通道)
ADC_ChCfg() // 配置采样时间
ADC_Start() // 启动采样
ADC_GetStatus() // 等待采样完成
ADC_GetValue() // 读取某通道转换结果
特点:
简单稳定;
适合 初期开发、调试或低速采样;
无需中断,利于调试。
函数评测与对比
函数名 用途 优点 注意事项
ADC_Init() 设置工作模式(扫描/单次等) 一次完成配置,结构清晰 需结合其他函数使用
ADC_ChCfg() 配置每个通道的采样时间 控制精度和速度关键点 建议设置足够采样时间
ADC_SeqChCmd() 配置序列采样的通道 可灵活定义多路ADC顺序 通道顺序即采样顺序
ADC_Start() 软件触发开始采样 简洁直接 配合轮询或中断使用
ADC_GetValue() 读取转换值 简单方便 仅支持当前通道
ADC_GetResult() 获取完整结构体结果(含通道号) 适合循环读取 适合与 DMA 配合
ADC_SetTriggerSrc() 设置外部触发源(定时器等) 可用于定时采样 若使用需关闭软件触发
ADC_DmaCmd() 启用 DMA 高速采样关键函数 必须配合 DMA 初始化
快速开发场景推荐函数组合
应用场景 推荐函数组合
单次低速采样 ADC_Init + ADC_SeqChCmd + ADC_Start + ADC_GetValue
多通道定时轮询 上述 + ADC_ChCfg + ADC_GetStatus
自动高速采样(无CPU干预) ADC_Init + DMA_Init + ADC_DmaCmd + 定时器触发
实时采集+报警(有阈值判断) ADC_Init + 中断触发 + ADC_IrqHandler
实战小技巧
设置 ADC_SEQ_CONTINUOUS 可以实现自动采样多通道;
ADC_ChCfg 的采样时间对精度非常关键,建议使用 ≥0x60;
若用 DMA,推荐配合 ADC_GetResult()(结构体带通道号);
配合 TIMERx 设置为 ADC 外部触发源,可实现定时采样;
若追求速度极致,可使用 ADC + DMA + 双缓冲 方案。
总结建议
开发阶段 推荐策略
初学入门 使用 ADC_Start() + ADC_GetValue()
多通道精确采样 配合 ADC_SeqChCmd() 与采样时间设置
实时系统/高采样率 采用 ADC_DmaCmd() + 定时器触发 + DMA 回调
工业级应用 使用中断回调+错误检查机制增强可靠性
附加资源推荐
HC32A4A0 官方库文档(M0+ SDK)
示例代码目录:driver/examples/adc/adc_seq_cont_dma
推荐工具:Keil MDK 5 + 官方Pack + logic analyzer调试ADC采样频率
页:
[1]