Projet voilier 4IRA1 Arnaud Vergnet Marino Benassai Bastien Picco Yohan Simard
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Timer.h 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #ifndef TIMER_H
  2. #define TIMER_H
  3. #include "stm32f103xb.h"
  4. #include "stm32f1xx_ll_tim.h" // Pour les timers
  5. enum CounterDirection {
  6. CLOCKWISE = LL_TIM_COUNTERDIRECTION_UP,
  7. COUNTER_CLOCKWISE = LL_TIM_COUNTERDIRECTION_DOWN,
  8. };
  9. /****************************************************************************
  10. * INTERRUPTIONS
  11. ***************************************************************************/
  12. void Timer_IT_enable(TIM_TypeDef * timer);
  13. void Timer_IT_disable(TIM_TypeDef * timer);
  14. void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio);
  15. /****************************************************************************
  16. * TIMER
  17. ***************************************************************************/
  18. /**
  19. * @brief Active l'horloge et r�gle l'ARR et le PSC du timer vis�
  20. * @note Fonction � lancer avant toute autre. Le timer n'est pas encore lanc� (voir MyTimerStart)
  21. * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
  22. * int Arr : valeur � placer dans ARR
  23. * int Psc : valeur � placer dans PSC
  24. * @retval None
  25. */
  26. void Timer_conf(TIM_TypeDef * timer, int arr, int psc);
  27. /**
  28. * @brief D�marre le timer consid�r�
  29. * @note
  30. * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
  31. * @retval None
  32. */
  33. void Timer_start(TIM_TypeDef * timer);
  34. /**
  35. * @brief Arr�t le timer consid�r�
  36. * @note
  37. * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
  38. * @retval None
  39. */
  40. void Timer_stop(TIM_TypeDef * timer);
  41. /****************************************************************************
  42. * PWM INPUT
  43. ***************************************************************************/
  44. void PWMi_conf(TIM_TypeDef * timer, int channel);
  45. float PWMi_getDutyCycle(TIM_TypeDef * timer);
  46. int PWMi_getPeriod(TIM_TypeDef * TIMx);
  47. /****************************************************************************
  48. * PWM OUTPUT
  49. ***************************************************************************/
  50. /**
  51. * @brief Configure le timer en mode PWM output � la fr�quence donn�e
  52. * @note
  53. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  54. * int channel : Le channel utilis� par la PWM
  55. * float freq : Fr�quence en Hz (entre 2Hz et pas trop grand svp)
  56. * float dutyCycle : Valeur entre 0 et 1
  57. * @retval None
  58. */
  59. void Timer_pwmo_conf(TIM_TypeDef * timer, int channel, float freq, float dutyCycle);
  60. /**
  61. * @brief Modifie la fr�quence des PWMs associ�es au timer donn�
  62. * @note
  63. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  64. * float freq : Fr�quence en Hz (entre 2Hz et pas trop grand svp)
  65. * @retval None
  66. */
  67. void Timer_pwmo_setFreq(TIM_TypeDef * timer, float freq);
  68. /**
  69. * @brief Modifie le duty cycle de la PWM
  70. * @note
  71. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  72. * int channel : Le channel utilis� par la PWM
  73. * float dutyCycle : Valeur entre 0 et 1
  74. * @retval None
  75. */
  76. void Timer_pwmo_setDutyCycle(TIM_TypeDef * timer, int channel, float dutyCycle);
  77. /**
  78. * @brief R�cup�re le duty cycle de la PWM
  79. * @note
  80. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  81. * int channel : Le channel utilis� par la PWM
  82. * @retval float dutyCycle
  83. */
  84. float Timer_pwmo_getDutyCycle(TIM_TypeDef * timer, int channel);
  85. /****************************************************************************
  86. * ENCODER
  87. ***************************************************************************/
  88. /**
  89. * @brief Configure le timer en mode encoder
  90. * @note
  91. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  92. * @retval None
  93. */
  94. void Timer_encoder_conf(TIM_TypeDef * timer);
  95. /**
  96. * @brief R�cup�re l'angle, en degr�s
  97. * @note
  98. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  99. * @retval None
  100. */
  101. int Timer_encoder_getAngle(TIM_TypeDef * timer);
  102. /**
  103. * @brief R�cup�re la direction
  104. * @note
  105. * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
  106. * @retval None
  107. */
  108. enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer);
  109. #endif