timer.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef _TIMER_H
  2. #define _TIMER_H
  3. #include "stm32g0xx_hal.h"
  4. #include <rtthread.h>
  5. /* USER CODE BEGIN Includes */
  6. /* USER CODE END Includes */
  7. #define GENERAL_TIM7 TIM7
  8. #define GENERAL_TIM_RCC_CLK_ENABLE() __HAL_RCC_TIM7_CLK_ENABLE()
  9. #define GENERAL_TIM_RCC_CLK_DISABLE() __HAL_RCC_TIM7_CLK_DISABLE()
  10. #define GENERAL_TIM_IRQ TIM7_IRQn
  11. // 定义定时器预分频,定时器实际时钟频率为:72MHz/(GENERAL_TIMx_PRESCALER+1)
  12. #define GENERAL_TIM_PRESCALER 63 // 实际时钟频率为:1MHz
  13. // 定义定时器周期,当定时器开始计数到GENERAL_TIMx_PERIOD值是更新定时器并生成对应事件和中断
  14. #define GENERAL_TIM_PERIOD 1000 // 定时器产生中断频率为:1MHz/1000=1KHz,即1ms定时周期
  15. // 最终定时器频率计算为: 72MHz/(GENERAL_TIMx_PRESCALER+1)/GENERAL_TIMx_PERIOD
  16. // 比如需要产生20ms周期定时,可以设置为: 72MHz/(359+1)/4000=50Hz,即20ms周期
  17. // 这里设置 GENERAL_TIMx_PRESCALER=359;GENERAL_TIMx_PERIOD=4000;
  18. extern TIM_HandleTypeDef htim14;
  19. extern TIM_HandleTypeDef htim3;
  20. extern TIM_HandleTypeDef htim7;
  21. /* USER CODE BEGIN Private defines */
  22. /* USER CODE END Private defines */
  23. void MODBUS_Tim14_Init(void);
  24. void MODBUS_Tim3_Init(void);
  25. void GENERAL_TIM7_Init(void);
  26. void delayXus(uint16_t us);
  27. //以下两个函数用来测量间隔时间
  28. extern uint32_t bsp_GetRunTime(void); //返回当前时间,单位ms
  29. extern uint32_t bsp_CheckRunTime(int32_t _LastTime); //返回与之前间隔的时间
  30. #endif