项目问题24/5/29需求:用一路IO口捕获外界方波PWM频率,将捕获值实时传入,使得正弦波频率和外界方波频率一致

问题

STM32F103控制下,定时器3的捕获PWM模式下的中断里的全局变量psc = 20,中断触发后,主函数while循环里TIM1_PWM_Init(1451,psc)函数初始化正弦波,用了中断传过来的全局变量psc后,为什么PWM频率不是PWM = 72000000.0 / ((145 * (psc1+1))=24.8Khz左右,而是250KHZ。当debug单步调试时PWM频率才正常

原因

在STM32F103控制下,定时器3的捕获PWM模式下的中断里的全局变量psc = 20,中断触发后,主函数while循环里调用了TIM1_PWM_Init(1451,psc)函数初始化正弦波,使用了中断传过来的全局变量psc。但是PWM频率不是预期的PWM = 72000000.0 / ((145 * (psc+1))=24.8Khz左右,而是250KHZ。这种情况可能是因为主函数中的while循环速度过快,导致定时器的计数不准确。

在单步调试时,程序会逐行执行,每个语句都会执行完毕才会进入下一个语句,因此PWM频率能够正常。而在正常运行时,while循环速度过快,导致定时器的计数不准确,从而导致PWM频率不是预期值。

为了避免这种情况,可以在while循环中加入延时函数,控制while循环速度,或者使用其他方式实现精确控制。这样就可以确保定时器计数的准确性,从而得到预期的PWM频率。

这可能是由于中断触发的频率非常高,导致主循环几乎没有机会运行。这可能是因为中断触发的频率比较高,导致主循环几乎没有机会运行

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值