根据您的描述,您的STM32L151定时器在PWM周期内触发ADC采样两次,一次在PWM上升沿,另一次在PWM低电平。这可能是由于以下几个原因:
1. 定时器配置问题:请检查定时器的配置,确保它只在一个PWM周期内触发一次ADC采样。检查定时器的预分频器、自动重载寄存器和捕获/比较模式寄存器的设置。
2. ADC触发源设置问题:请检查ADC的触发源设置,确保它是正确配置为定时器触发。在ADC的配置寄存器中,设置正确的触发源和触发边缘。
3. DMA中断问题:您提到使用DMA中断函数来反转GPIO输出。请检查DMA中断函数的实现,确保它不会意外地触发额外的ADC采样。
为了确保ADC采样到PWM正脉冲的中间时刻,您可以尝试以下方法:
1. 调整定时器的捕获/比较模式寄存器,以确保ADC在PWM正脉冲的中间时刻触发。
2. 使用定时器的输入捕获功能来测量PWM信号的周期和占空比,然后根据这些信息计算PWM正脉冲的中间时刻,并在该时刻触发ADC采样。
3. 如果可能,使用另一个定时器来生成一个与PWM正脉冲中间时刻同步的触发信号,然后将该触发信号用作ADC的触发源。
最后,请确保您的硬件连接和软件实现都是正确的,以避免意外的触发和采样。希望这些建议能帮助您解决问题。
根据您的描述,您的STM32L151定时器在PWM周期内触发ADC采样两次,一次在PWM上升沿,另一次在PWM低电平。这可能是由于以下几个原因:
1. 定时器配置问题:请检查定时器的配置,确保它只在一个PWM周期内触发一次ADC采样。检查定时器的预分频器、自动重载寄存器和捕获/比较模式寄存器的设置。
2. ADC触发源设置问题:请检查ADC的触发源设置,确保它是正确配置为定时器触发。在ADC的配置寄存器中,设置正确的触发源和触发边缘。
3. DMA中断问题:您提到使用DMA中断函数来反转GPIO输出。请检查DMA中断函数的实现,确保它不会意外地触发额外的ADC采样。
为了确保ADC采样到PWM正脉冲的中间时刻,您可以尝试以下方法:
1. 调整定时器的捕获/比较模式寄存器,以确保ADC在PWM正脉冲的中间时刻触发。
2. 使用定时器的输入捕获功能来测量PWM信号的周期和占空比,然后根据这些信息计算PWM正脉冲的中间时刻,并在该时刻触发ADC采样。
3. 如果可能,使用另一个定时器来生成一个与PWM正脉冲中间时刻同步的触发信号,然后将该触发信号用作ADC的触发源。
最后,请确保您的硬件连接和软件实现都是正确的,以避免意外的触发和采样。希望这些建议能帮助您解决问题。
举报