请问各位,我使用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
配置
STM32F103ZET6 CS信号无法拉高
在FreeRTOS中串口重定向使用HAL库函数中断出现异常
STM32F103C8T6 有没有过UL认证?
小白求助,结束while循环后会跳转至循环前继续执行的问题?
官方列表中STM32F1系列单片机支持FOC的双电机控制的SDK是哪个版本。
小白求助
请问这个函数里面AMG要读取温度值转RGB怎么写
stm32f10x_tim.h文件编译错误?
关于STM32F103 USB IAP在bootloader跳转到app区时遇到的问题
STM32F107搭配DP83825 使用lwip通信
弄个延迟试一试
一定要把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。你不妨验证之。