pwm.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <MyProject.h>
  2. /**
  3. @brief 对变量取32位的绝对值
  4. @param[in] value
  5. @return 绝对值
  6. @date 2022-07-13
  7. */
  8. uint32_t Abs_F32(int32_t value)
  9. {
  10. if (value < 0)
  11. { return (-value); }
  12. else
  13. { return (value); }
  14. }
  15. Input_Capture_t xdata inputCapture;
  16. /**
  17. @function Input_Capture_Calc
  18. @brief 输入捕获计算 频率与占空比
  19. @date 2025-11-21
  20. */
  21. void Input_Capture_Calc(void)
  22. {
  23. if (inputCapture.UpdateFlag)
  24. {
  25. if ((Abs_F32(inputCapture.TimerDROld - inputCapture.TimerDR) < 0xFF) &&
  26. (Abs_F32(inputCapture.TimerARROld - inputCapture.TimerARR) < 0xFF))
  27. {
  28. inputCapture.OutFreq = DivQ_L_MDU(0x0478, 0x68C0, inputCapture.TimerARR);
  29. inputCapture.OutDuty = (float)1000 * inputCapture.TimerDR / inputCapture.TimerARR;
  30. }
  31. inputCapture.UpdateFlag = 0;
  32. inputCapture.TimerDROld = inputCapture.TimerDR;
  33. inputCapture.TimerARROld = inputCapture.TimerARR;
  34. }
  35. }