CubeMX,HAL库 简单的使用ADC

在CubeMX中配置:

在这里插入图片描述
配置解释:

synchronous clock mode divided by   同步时钟模式分频
asynchronous clock mode divided    异步时钟模式分频
resolution分辨率
data alignment 数据对齐(右)

Sequencer 扫描顺序        
Sequencer fully configurable  描通道的顺序与通道号channel number无关
Sequencer not fully configurable  通道扫描的顺序由通道编号定义

scan conversion mode       扫描转换模式(需要选择Sequencer not fully configurable,且扫描通道数number of conversion 要大于1)
continuous conversion mode 自动连续扫描模式(需要选择Sequencer not fully configurable,且开启MDA循环模式)
Discontinuous Conversion Mode   非连续转换模式
MDA continuous Requests   DMA连续请求
(在开启DMA连续请求前 需先开启DMA配置)

End of conversion selection 转换结束选择   
End of single conversion 单次转换结束 
End of sequence of conversion 转换序列结束

overrun behaviour  侵占行为   
overrun data preserved 溢出的数据保存  
overrun data overwritten 溢出的数据覆盖

external trigger conversion edge 外部触发机制

配置完成,生成代码后,只需要调用这两个函数即可:

			HAL_ADC_Start(&hadc1);
			printf("\r\n %d",HAL_ADC_GetValue(&hadc1));

需要注意的是 ADC开始一次只产生一个值,如果开始一次读取多次,那么读取的ADC值为重复的值。
也就是说需要一直循环 HAL_ADC_Start()和 HAL_ADC_GetValue()这两个函数,才能读取最新的值。

如果以使用DMA方式

在这里插入图片描述
在这里插入图片描述

	uint32_t ADC_DMA_buffer[10]={0};//定于一个全局变量
	HAL_ADC_Start_DMA(&hadc1, ADC_DMA_buffer, 10);

去读取这个数组的数即可。

另可参考这位博主的教程,更加详细

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值