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