
stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。$ J" R) Q4 ?8 K5 X i; L 需求: % A1 D( i, S6 Y2 J9 T" \2 X# ? 使用stm32H743的ADC采集5路数据,当然还要配合DMA,现在把5路数据分在两个ADC上,ADC1和ADC3,那么也要用两个DMA还传送数据。 , e" f/ L8 K G" {# k7 { CubeMX配置如下:! s. s( U4 k( E5 s 6 }; M4 e! X; d 配置时钟: 8 G4 f5 x6 p0 Q) y 先配置主时钟,我的是8M的,再配置系统频率480M,然后配置ADC时钟36M,分频后ADC的频率为18M,其它参数系统会自动配置,这个还是比较方便的,配置如下图: ![]() 0 \8 m% A- D( o( W8 t7 Y ![]() ' }6 e {/ _/ M) s 下面配置芯片管脚:1 k. P' Q! Z% }9 q2 b$ R ' u( c( Y! q7 r+ J9 c7 I! |9 R0 d ADC1下面采3个通道: 5 ^8 ]2 Z1 p6 h, T4 ]) x ![]() " N5 L# m/ k, ?/ ?+ F ![]() m0 r# r% f" [ DMA配置: : R/ r$ W) s$ x- D3 R+ ], J ![]() GPIO配置: ![]() - ^ T" X7 t& t+ d1 ]) K& R ADC3下面挂2个通道:* y& _/ | ~$ V7 R) { 主要是DMA,避免冲突,用了另一个DMA,其它配置都一样。 ; b' {: Z* T0 P% A. H* ]: i ![]() 中断配置:: V/ `* d; E. \# P" d2 A0 q * c/ v* l) z2 l 因为在使用HAL库时,函数调用太繁杂,也没有那么多时间细细研究,所以,把调用HAL句柄的选项点掉了:* l9 V6 r5 x6 L4 p( ^ ![]() % D+ X( S5 ?! ~ ~, z; O6 u 然后就可以生成代码了。 在生成后的代码中,要启用采样时调用函数:
在文件stm32h7xx_it.cvoid 中的中断函数: void DMA2_Stream0_IRQHandler(void) void DMA1_Stream0_IRQHandler(void) 中,要清中断标志位和停止采集:
s6 I- F6 _. N! T' \, ^( h8 u ) _7 c* \: f8 W% H" \' ^ # l$ F$ S, X( ~9 l2 S; K5 { |
实战经验 | 关于STM32H7使用LL库生成ADC代码工作异常问题说明
实战经验 | 关于STM32H745的MC SDK电机控制工程问题的解决办法
【H745I GUI】1.GreenHouse 灯光控制
【Wio Lite AI视觉开发套件】+移植TensorFlow Lite
STM32H745I-DISCO脉冲宽度调制(PWM)
STM32H745I-DISCO串口通信,输入输出
拷打cubemx【002】——自定义还需基于芯片的工程
STM32硬件结构学习
STM32中BOOT的作用
STM32H7的TCM,SRAM等五块内存基础知识