STM32CubeMX获得ADC的采样数值问题
首次用STM32CubeMX创建工程,在PWM上遇到许多问题,还好“绕过难点”基本过了。但在ADC上则出现大问题,按照网友在本站的发帖的方法,没有一个成功。也不知道应该如何从哪个函数得到ADC的采样值。
我选的是ADC1的IN1,IN2,IN3这3个通道,配置项中主要选项见3张图。
因为采用DMA方式,在adc.c和dma.c中到找不到应该从哪了获得采样后的实测数据存储位置和变量名。
求助,先谢谢了。
本帖最后由 wenyangzeng 于 2018-12-26 22:07 编辑
楼主只配置了ADC,没有启动ADC,就好像发动了车,但没有挂挡。
uint32_t ADC_Result;int main(void)
{
.
.
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)& ADC_Result, 3);
.
.
.
}
接着楼上的内容,你启动HAL_ADC_Start_DM后,
还需要下面这个函数,判断ADC采样完成。。。
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
:::::
}
你还配置了注入通道?
另外,配置了还要添加合适的用户代码,比方HAL_ADC_START_DMA(); 本帖最后由 zhjb1 于 2018-12-27 20:21 编辑
wenyangzeng 发表于 2018-12-26 22:01
楼主只配置了ADC,没有启动ADC,就好像发动了车,但没有挂挡。
uint32_t ADC_Result;int main(void)
{
您好!
实际上搜代码搜到可用的ADC启动函数有:
HAL_ADC_Start_IT(&hadc1);
HAL_ADCEx_Calibration_Start(&hadc1);
第一个无报错,但MCU不动了——做了个程序计数器,不变,LED也不闪了。
第二个也不报错,所有PWM正常,LED正常,但ADC不知哪里读出数据。
添加您给的,定义变量:
uint32_t ADC_Result;
在循环体中添加
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC_Result,4);
HAL_Delay(50);
val1=ADC_Result;
val2=ADC_Result;
val3=ADC_Result;
val4=ADC_Result;
结果倒是显示了,但所有结果都只有ADC 的通道in1有效,通道2,3没有显示出来。
这是什么原因?谢谢
实际上还有一个问题:UART5在STM32CubeMX中设置没有问题,但printf没有结果,也运行自己生成的uart.c了,在此谢谢。
本帖最后由 wenyangzeng 于 2018-12-27 20:54 编辑
zhjb1 发表于 2018-12-27 20:18
您好!
实际上搜代码搜到可用的ADC启动函数有:
HAL_ADC_Start_IT(&hadc1);
楼主貌似没有正确分配ADC的通道参数了,(还有那个injected模式并不适合混合使用)
这个我都设了,与您这图稍不一样:
1~4rank都一样,都是图上的一个数值。
谢谢
页:
[1]