


调用函数,启动相关定时器。

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_CAN1_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start(&htim2);
/* USER CODE END 2 */


/**
* @brief Period elapsed callback in non-blocking mode
* @param htim TIM handle
* @retval None
*/
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_PeriodElapsedCallback could be implemented in the user file
*/
}
这是一个弱定义函数,用户可以在使用时重新定义自己的函数执行内容。

uint16_t tim2_irq_cnt = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
tim2_irq_cnt ++;
}
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_CAN1_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
// HAL_TIM_Base_Start(&htim2); //启用定时器
HAL_TIM_Base_Start_IT(&htim2); //启用定时器中断函数
/* USER CODE END 2 */


uint16_t tim2_irq_cnt = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
tim2_irq_cnt ++;
if(tim2_irq_cnt > 1000)
{
HAL_GPIO_TogglePin(GPIOF, LED0_Pin|LED1_Pin);
tim2_irq_cnt = 0;
}
}
最终实现程序定时功能。
跑马灯