C语言-STM32:初始定时器(通用定时器)

STM32定时器的作用: STM32定时器是一个重要的硬件资源,主要用于以下几种用途:

  1. 计数:它可以用来计数外部事件的次数,例如脉冲或信号的周期。
  2. 定时:定时器可以设置一个特定的时间间隔后产生中断,用于执行周期性的任务。
  3. PWM(脉宽调制):通过设置定时器的捕获/比较寄存器,可以生成不同占空比的PWM波形,用于电机控制、亮度调节等。
  4. 同步信号:定时器可以与其他外设或定时器进行同步,以实现复杂的时序控制。
  5. 延迟函数:通过设置定时器的计数值,可以实现精确的延时功能。

初始化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,则会启用中断;如果不需要中断,可以省略中断相关的初始化和启用代码。

相关推荐

  1. C语言-STM32初始定时器(通用定时器)

    2024-05-12 07:22:11       10 阅读
  2. C语言-STM32-定时器定时器的输入捕获

    2024-05-12 07:22:11       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 07:22:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 07:22:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 07:22:11       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 07:22:11       20 阅读

热门阅读

  1. Lua 协程池

    2024-05-12 07:22:11       12 阅读
  2. EureKa详细讲解通俗易懂

    2024-05-12 07:22:11       10 阅读
  3. flask+layui显示监控视频

    2024-05-12 07:22:11       12 阅读
  4. 代码绘梦:Processing艺术编程入门

    2024-05-12 07:22:11       8 阅读
  5. 大数据调度 Apache Airflow 安装部署

    2024-05-12 07:22:11       14 阅读
  6. Mac 双网卡

    2024-05-12 07:22:11       15 阅读
  7. Spring AMQP的作用和用法

    2024-05-12 07:22:11       15 阅读
  8. 【数据结构】顺序栈

    2024-05-12 07:22:11       13 阅读
  9. C++基础——友元

    2024-05-12 07:22:11       12 阅读
  10. 【YOLOv9算法原理简介】

    2024-05-12 07:22:11       11 阅读
  11. unix C之环境变量

    2024-05-12 07:22:11       15 阅读
  12. react配置@指向src目录

    2024-05-12 07:22:11       10 阅读
  13. ActiViz中的图像平滑

    2024-05-12 07:22:11       12 阅读