赞
踩
STM32定时器的作用: STM32定时器是一个重要的硬件资源,主要用于以下几种用途:
初始化STM32 TIM2 定时器的基本步骤如下(以C语言为例):
头文件
- #ifndef __TIMER_H__
- #define __TIMER_H__
-
- #include "stm32f1xx_hal.h"
-
- void timer_init(uint16_t arr,uint16_t psc);
- #endif
- #include "timer.h"
-
- TIM_HandleTypeDef timer_handler={0};//初始化句柄
-
- //定时器初始化函数
- void timer_init(uint16_t arr,uint16_t psc){
- timer_handler.Instance=TIM2; //指定定时器实例为TIM2
- timer_handler.Init.Period=arr; //设置周期值
- timer_handler.Init.Prescaler=psc; // 时钟预分频因子
- timer_handler.Init.CounterMode=TIM_COUNTERMODE_UP; //计数模式
- timer_handler.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;//自动重载预加载禁止
-
- HAL_TIM_Base_Init(&timer_handler); //基本定时器初始化
- HAL_TIM_Base_Start_IT(&timer_handler); // 开始定时器
- }
-
- //msp函数
- void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim){
- if(htim->Instance==TIM2){
- __HAL_RCC_TIM2_CLK_ENABLE(); //时钟使能
- HAL_NVIC_SetPriority(TIM2_IRQn,2,2);//设置中断线,抢占优先级,和响应优先级
- HAL_NVIC_EnableIRQ(TIM2_IRQn); // 启用TIM2中断
-
- }
- }
- //中断服务函数
- void TIM2_IRQHandler(void){
- HAL_TIM_IRQHandler(&timer_handler);
- }
-
- //更新回调函数
- void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
- if(htim->Instance==TIM2){
- LED_8_Toggle();
- }
- }
请注意,实际应用中需要根据具体系统时钟频率、所需的定时精度以及是否需要中断来调整预分频因子和周期值。上述代码中的Use_TIM2_IRQ
是一个布尔变量,如果设置为true
,则会启用中断;如果不需要中断,可以省略中断相关的初始化和启用代码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。