项目问题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频率。

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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 20:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 20:24:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 20:24:02       82 阅读
  4. Python语言-面向对象

    2024-06-13 20:24:02       91 阅读

热门阅读

  1. TCP协议

    TCP协议

    2024-06-13 20:24:02      30 阅读
  2. 科技发展对社会就业结构的影响与挑战

    2024-06-13 20:24:02       28 阅读
  3. C语言练习题04

    2024-06-13 20:24:02       31 阅读
  4. 【RAG入门教程04】Langchian的文档切分

    2024-06-13 20:24:02       21 阅读
  5. docker编译一个支持flv的nginx镜像

    2024-06-13 20:24:02       32 阅读
  6. Python基础(一)

    2024-06-13 20:24:02       25 阅读
  7. 【css】html 标初始化CSS样式(初学者必看)

    2024-06-13 20:24:02       33 阅读
  8. Jackson无缝替换Fastjson

    2024-06-13 20:24:02       26 阅读
  9. 在 Spring Boot 中实现文件上传功能

    2024-06-13 20:24:02       35 阅读
  10. TCP和UDP区别

    2024-06-13 20:24:02       29 阅读