CubeMX配置ADC多通道选择读取(非DMA)
最近在做项目时需要stm32f103分别读取角度传感器值和电压值,采用HAL库+CubeMX方式并没有找到像标准库一样直接可以调用ADC_RegularChannelConfig()函数选择ADC的通道,各种查找后找到一种解决方案,分享一下。
1 利用CubeMX建立工程
这里采用的是常用的STM32F103C8T6芯片,选择外部高频时钟,SWD调试
根据原理图,PA6口采集电压值,PA3口采集角度传感器值,分别对应ADC1通道6和通道3
配置ADC1,选择ADC通道3和通道6,独立模式、右对齐、取消规则转换
配置串口,方便打印角度值和电压值
设置主时钟为72MHz,完成CubeMX工程配置。
2 编写单独读取ADC通道函数
建立sConfig结构体,选择不同通道实现单独读取
//ch(1-6Chnnal),times(读取次数)
uint32_t ADC_Get_Average(uint8_t ch,uint8_t times)
{
ADC_ChannelConfTypeDef sConfig; //通道初始化
uint32_t value_sum=0;
uint8_t i;
switch(ch) //选择ADC通道
{
case 1:sConfig.Channel = ADC_CHANNEL_1;break;
case <