pwm.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "pwm.h"
  2. /**
  3. * @param htim TIM handle
  4. * @param Channel TIM Channels to be enabled
  5. * This parameter can be one of the following values:
  6. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  7. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  8. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  9. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  10. * @param arr specifies the Counter register new value.
  11. * @param crr specifies the Capture Compare register new value.
  12. */
  13. void Tim_PWM(TIM_HandleTypeDef *htim,uint32_t channel,uint32_t arr,uint32_t crr)
  14. {
  15. uint32_t ARR,Channel,CRR=0;
  16. switch(channel) {
  17. case 1:
  18. Channel=TIM_CHANNEL_1;
  19. break;
  20. case 2:
  21. Channel=TIM_CHANNEL_2;
  22. break;
  23. case 3:
  24. Channel=TIM_CHANNEL_3;
  25. break;
  26. case 4:
  27. Channel=TIM_CHANNEL_4;
  28. break;
  29. default:
  30. Channel=TIM_CHANNEL_ALL;
  31. }
  32. // if(arr==NULL)
  33. // {
  34. // ARR=100-1;
  35. // }else ARR=arr-1;
  36. if(crr>99)
  37. {
  38. CRR=99;
  39. }else if (crr<1)
  40. {
  41. CRR=0;
  42. }else CRR=crr;
  43. //__HAL_TIM_SET_AUTORELOAD(htim, ARR); /*设置定时器自动加载值,修改频率*/
  44. __HAL_TIM_SetCompare(htim,Channel,CRR); /*设置占空比*/
  45. }