stm32如何实现PWM输出及周期内ADC采样

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26786109/article/details/78223801
1.TIM1 通道一设置为PWM模式, 通道3设置为Timing模式,同时允许TIM_IT_Update和TIM_IT_CC3更新中断;

2.stm32的ADC有三种方法:(采样方法三 TIM8+ADC1+DMA2)

    A、使用定时器中断每隔一定时间进行ADC转换,这样每次都必须读ADC的数据寄存器,非常浪费时间!

    B、把ADC设置成连续转换模式,同时对应的DMA通道开启循环模式,这样ADC就一直在进行数据采集然后通过DMA把数据搬运至内存。但是这样做的话还得加一个定时中断,用来定时读取内存中的数据!

    C、使用ADC的定时器触发ADC转换的功能,然后使用DMA进行数据的搬运!这样只要设置好定时器的触发间隔,就能实现ADC定时采样转换的功能,然后可以在程序的死循环中一直检测DMA转换完成标志,然后进行数据的读取,或者使能DMA转换完成中断,这样每次转换完成就会产生中断。

3. 工作流程为:当发生TIM_IT_Update中断时使能TIM8,开始ADC采样;当发生TIM_IT_CC3中断时失能TIM8,停止ADC采样。这样就可以实现一个PWM波内采样,可以用于PWM触发发射信号,ADC采样回波信号,还计算从发射到回波信号的时间。流程图如下。

猜你喜欢

转载自blog.csdn.net/qq_26786109/article/details/78223801