STM32——TIM定时器

发布者:Xingfu6666最新更新时间:2024-07-29 来源: cnblogs关键字:STM32  TIM定时器  宏定义 手机看文章 扫描二维码
随时随地手机看文章

STM32共有16个定时器,定时器分类:2个高级控制定时器、

                   10个通用定时器、

                    2个基本定时器、

                  2个看门狗定时器

定时器特性:

 

 最大定时器时钟配置专用定时器:RCC_DCKCFGR   ----->>>>RCC dedicated clock configuration register

               TIMPRE位:主要用于定时器预分频选择,个人认为这称作为倍频选择更合适。TIMxCLK =  ? xPCLKx。
重装载定时器:TIMx_ARR,存储内容为要装载到实际重装载寄存器的值。

计数寄存器:TIMx_CNT,当前计数值

 

基本定时器框图:

 

 方框中的阴影部分为影子寄存器:既有两个定时器。

基本定时器主要注意:

          1、时钟源   ,RCC_DCKCFGR 控制

          2、控制器    ,

          3、计数器    , 计数器寄存器(TIMx_CNT) 、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR),
          4、定时器周期计算

标准库初始化结构体:

TIM_TimeBaseInitTypeDef 

TIM_TimeBaseInit

 

入门实验,使用定时器产生0.5秒的中断,使LED实现亮灭反转循环,


宏定义


#ifndef __BSP_BASIC_TIME_H

#define __BSP_BASIC_TIME_H

#include 'stm32f4xx.h'

// 定时器源选择

#define BASIC_TIM                TIM6

#define BASIC_TIM_CLK        RCC_APB1Periph_TIM6


//中断

#define BASIC_TIM_IRQn                    TIM6_DAC_IRQn

#define BASIC_TIM_IRQHandler        TIM6_DAC_IRQHandler


void TIMx_Configuration();


#endif //__BSP_BASIC_TIME_H


中断配置,基本定时器模式配置


#include './tim/bsp_basic_time.h'

/*

编程要点:

初始化 RGB 灯的 GPIO

开启基本定时器时钟

设置定时器周期和预分频器

启动定时器更新中断,并开启定时器

定时器中断服务函数实现 RGB 灯的反转

*/


// 中断函数

static void TIMx_NVIC_Configuretion()

{

        NVIC_InitTypeDef NVIC_InitStructure;

        //设置中断组

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

        //设置中断来源

        NVIC_InitStructure.NVIC_IRQChannel = BASIC_TIM_IRQn;

        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

        //设置抢占优先级

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;

    

        NVIC_Init(&NVIC_InitStructure);

}


//定时器基本模式设置

static void TIM_Mode_Config(void)

{

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    // 开启 TIM_CLK ,X(6,7)

    RCC_APB1PeriphClockCmd(BASIC_TIM_CLK,ENABLE);

    // 累计 TIM_Period 个后产生新的中断或者更新

    // 当定时器从0计数到4999,即为5000次,为一个定时周期

    TIM_TimeBaseStructure.TIM_Period = 5000-1;

    // 设置定时频率 

    TIM_TimeBaseStructure.TIM_Prescaler = 9000-1;

    // 初始化定时器

    TIM_TimeBaseInit(BASIC_TIM,&TIM_TimeBaseStructure    );

    

    // 清除定时器更新中断标志位

     TIM_ClearFlag(BASIC_TIM,TIM_FLAG_Update);

    //开启定时器更新中断

    TIM_ITConfig(BASIC_TIM,TIM_IT_Update,ENABLE);

    

    // 定时器使能

    TIM_Cmd(BASIC_TIM,ENABLE);

}


void TIMx_Configuration()

{

    TIMx_NVIC_Configuretion();

    TIM_Mode_Config();

}


主函数调用


int main(void)

{

    /* LED 端口初始化 */

    LED_GPIO_Config();     

  

  /*初始化按键*/

  Key_GPIO_Config();

    TIMx_Configuration();

 

    /* 轮询按键状态,若按键按下则反转LED */ 

    while(1)                            

    {       

 

    }

}


中断函数


void BASIC_TIM_IRQHandler(void)

{

    if( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET )

    {

        LED1_TOGGLE;

        TIM_ClearITPendingBit(BASIC_TIM , TIM_IT_Update);

    }

    

}

主要引用的函数:TIM_ClearFlag  影响TIMx_SR 寄存器的 UIF 位
        TIM_ITConfig  在发生上溢时产生中断。
        TIM_ClearITPendingBit   清除中断标志位

关键字:STM32  TIM定时器  宏定义 引用地址:STM32——TIM定时器

上一篇:ucosiii笔记01
下一篇:stm32 嵌入式开发 中三重ADC交替模式采集数据总结

推荐阅读最新更新时间:2026-03-25 11:54

STM32定时器 TIM3之定时中断
以STM32F030F4P6,uVision开发环境为例,注意了,若使用其它相近芯片,本文仅供参考。 TIM3 结构框图 在中断文件stm32f0xx_it.c 中修改或添加下面语句、函数。 extern void LED_A4 (); //外部引入函数声明 加在文件首部 void TIM3_IRQHandler(void) // 加入TIM3中断函数 { TIM_ClearITPendingBit(TIM3,TIM_IT_Update); // 清TIM3溢出中断标志位 LED_A4 ();
[单片机]
<font color='red'>STM32</font><font color='red'>定时器</font> <font color='red'>TIM</font>3之定时中断
STM32——TIM定时器
STM32共有16个定时器,定时器分类:2个高级控制定时器、                   10个通用定时器、                   2个基本定时器、                   2个看门狗定时器、 定时器特性: 最大定时器时钟配置专用定时器:RCC_DCKCFGR ----- RCC dedicated clock configuration register                TIMPRE位:主要用于定时器预分频选择,个人认为这称作为倍频选择更合适。TIMxCLK = ? xPCLKx。 重装载定时器:TIMx_ARR,存储内容为要装载到实际重装载寄存器的值。 计数寄存器:
[单片机]
<font color='red'>STM32</font>——<font color='red'>TIM</font><font color='red'>定时器</font>
STM32定时器TIM_RepetitionCounter作用详解
在STM32中 有一个这个TIM_RepetitionCounter参数。如下,定时了0.001s,然后在中断中计数1000次,点亮熄灭LED,正常情况来说,led会亮1s,然后灭1s,不断重复。 当 TIM_RepetitionCounter 参数设置为0 时,确实是1s。 当 TIM_RepetitionCounter 参数设置为1 时,明显感觉到亮灭的时间被延长了一倍。 所以 TIM_RepetitionCounter 应该是在本次定时结束后,再重装载定时 1次,进入中断,所以 当TIM_RepetitionCounter =1时,相当于定时0.001s 2次进入中断,那么led的亮灭时间就变成了2s。 当TIM_R
[单片机]
<font color='red'>STM32</font><font color='red'>定时器</font>中<font color='red'>TIM</font>_RepetitionCounter作用详解
stm32入门之通用定时器TIM2~TIM5)
在stm32的开发中我们经常会用到定时器,因此在学习stm32的过程中定时器是必须要学的,而定时主要又分为三大类分别为: 高级控制定时器(TIM1与TIM8) 通用定时器(TIM2~TIM5) 基本定时器(TIM6与TIM7) 今天我只要想给大家介绍的是第二种通用定时器(TIM2~TIM5),还是老样子我先以文字给大家简单概述,在通过视频详细为大家分析细节。 精通定时间的老油条勿喷!!! 首先我们先来了解一下TIM2~TIM5定时器基本功能 (1)16位向上、向下、向上/向下自动装载计数器 (2)16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值 (3)4个独立通道: ─ 输入捕获 ─ 输
[单片机]
<font color='red'>stm32</font>入门之通用<font color='red'>定时器</font>(<font color='red'>TIM</font>2~<font color='red'>TIM</font>5)
stm32学习之基本定时器--TIM
  stm32f1系列,有基本定时器、通用定时器、高级定时器三类TIM定时器。其中,TIM6/7是本文要讲的基本定时器。   基本定时器TIM6/7是16位的只能向上计数的定时器,只能用于定时。而通用定时器和高级定时器有更多的功能,如还可以进行输出比较、输入捕捉等功能,相关的介绍会写在后面的文章,这里只讲基本定时器。   先看看基本定时器的框图,如图24-1。 图24-1   时钟源   我们查阅参考手册RCC章节的时钟树可以知道,RCC的定时器时钟TIMxCLK,即内部时钟CK_INT是由APB1预分频器分频后提供。如图24-2所示,如果APB1预分频系数为1,,则频率不变,否则频率为2倍。即此时用于分频的A
[单片机]
<font color='red'>stm32</font>学习之基本<font color='red'>定时器</font>--<font color='red'>TIM</font>
STM32学习笔记——利用通用定时器TIM2进行精确延时
1. 通用定时器概述及性能 1.1 概述 在作者所使用的stm32芯片上,共有TIM1 1个高级定时器以及TIM2、TIM3、TIM4共3个通用定时器。其中各通用定时器均由一个通过可编程预分频器驱动的16位自动装载计数器构成。适用于多种场合,包括测量输入信号的脉冲长度(输入采集)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。定时器是完全独立的,而且没有互相共享任何资源。它们可以一起同步操作。 1.2 性能 通用TIMx定时器特性包括: 16 位向上,向下,向上/向下自动装载计数器 16 位可编程预分频器,计数器时钟频率的分频
[单片机]
<font color='red'>STM32</font>学习笔记——利用通用<font color='red'>定时器</font><font color='red'>TIM</font>2进行精确延时
基于STM32单片机高级控制定时器TIM1和TIM8的功能解析
高级控制定时器(TIM1 和TIM8) TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/ 下自动装载计数器 ● 16位可编程( 可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535 之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ●使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA : ─ 更新:计数器向上溢出/ 向下溢出,计数器初始化(
[单片机]
基于<font color='red'>STM32</font>单片机高级控制<font color='red'>定时器</font><font color='red'>TIM</font>1和<font color='red'>TIM</font>8的功能解析
STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置
cube基本配置,外设开启编码器,串口2 -------------------------------------------------------------------------------------------------------------------------- 错误:error: #20: identifier TIM_ICPOLARITY_BOTHEDGE is undefined 意思是,高级、通用定时器不能用BothEdge,只有基本定时器才能用BothEdge F4系列 /* 编码器初始化及使能编码器模式 */ ENCODER_TIMx_Init(); HA
[单片机]
<font color='red'>STM32</font> HAL库学习系列第5篇 <font color='red'>定时器</font><font color='red'>TIM</font>---编码器接口模式配置
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved