|
请问各位,我使用CubeMX生成STM32F103C8T6的DMA ADC代码,工程配置请看附件,我运行如下代码为什么无效: /* USER CODE BEGIN Includes */ #include "main.h" #include "stdio.h" uint32_t ADC_Value=0; int main(void) { HAL_Init(); SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_DMA_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ printf("---211220---\r\n"); HAL_ADC_Start_DMA(&hadc1,&ADC_Value,1); printf("Value=%d\r\n",ADC_Value); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) {} } 输出结果总是“0”。 |
串口输出的ADC值
ADC-CubeMX.rar
下载2.6 KB, 下载次数: 4, 下载积分: ST金币 -1
配置
foc2.0函数SVPWM_3ShuntCalcDutyCycles看不明白
STM32G0B1
F103的IIC支持高速400K频率吗?
STM32F103RCT6断电以后,ADC会漏电
无源晶振开关电路设计
要在STM32F103C8T6上实现TIM+DMA+ADC采集电压,cubemx配置为什么,代码怎么写
为什么DMA搬运数据只搬运最后1个字节的数?
PCF8563(RTC)读取时间有误
为什么STM32H7的DMA第一次启动延时较长?
pwm关闭输出
微信公众号
手机版
弄个延迟试一试
一定要把MX_DMA_Init()初始化放在ADC1初始化前面,因为ADC初始化最后会调用ADC_MSP,此时会设置DMA的参数,由于DMA的时钟还没有开启,DMA的设置是无效的,可以说是cubemx的bug, 除非要进入到高级页面,刻意把初始化的顺序排正确,否则默认的排序是有问题的.
现在MX_DMA_Init()放在ADC前面初始化了,和之前是有变化,可是值好像一直不变。没有随着电压变化,还有可能是哪里的问题?
谢谢,我在HAL_ADC_Start_DMA()后面加了HAL_Delay(500),没效果。
楼主,请确定配置采集的IO口电压是多少。最好描述一下采集的IO口,还有ADC的带贴一下。仿真枪模式下,HAL_ADC_ConvCpltCallback这个是采集完成后调用的回调函数,是否可以进入?
通过仿真,发现ADC的DR寄存器是有变化的,但是DMA寄存器没变化。
楼主,您好。删除AN1的配置试试,另外看一下DMA是否能够产生中断,DMA和ADC的寄存器检查一下。
ok.
还要注意DMA初始化顺序要先于外设配置,这个你可能知道了,还是提醒下。
另外,你如果是调用HAL_ADC_Start_DMA(&hadc1, ADCData, 1);函数的话,ADCdata的数据宽度定义为32位。那么在CubeMx配置DMA的那个地方,Memory宽度选择为WORD。你不妨验证之。