stm32f103ZET6 adc dma
时间: 2023-07-29 07:13:01 浏览: 240
基于stm32f103zet6的双通道ADC
STM32F103ZET6是一款具有强大ADC功能的微控制器。它可以实现多达18个通道的ADC转换,并且支持连续转换。在这个例子中,使用了ADC1的通道1,引脚为PA1。通过DMA读取ADC转换结果,实现了对DMA的学习。
在主函数中,首先进行了一些初始化操作,包括系统时钟初始化、LED初始化、按键初始化、串口初始化、ADC初始化和DMA初始化。然后进入了一个无限循环,在循环中检测按键状态,如果按键按下,则启动ADC转换,并通过DMA读取转换结果。读取的结果存储在一个数组中,然后对数组进行求和并求平均值,最后将平均值打印出来。
关于DMA的配置流程,需要注意单次传输和循环传输的区别。在单次传输模式下,需要在启动DMA传输之前关闭DMA使能,并配置传输的数据量,然后再使能DMA。在读取数据之前,需要检查传输完成标志位,并手动清除。而在连续传输模式下,只需要直接开启DMA,并接收来自外设地址的请求,传输的数据量由外设地址决定。不需要先失能再使能,也不需要判断传输完成标志位。
在配置DMA时,需要注意正确配置DMA初始化结构体,特别是存储器地址增量的使能。如果没有正确使能存储器地址增量,可能会导致错误的数据。
总结来说,这段代码实现了对STM32F103ZET6的ADC和DMA功能的使用,通过DMA读取ADC转换结果,并对结果进行处理和打印。
#### 引用[.reference_title]
- *1* *2* *3* [STM32F103ADC数模转换用DMA读取学习](https://blog.csdn.net/qq_44086987/article/details/106926863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文