STM32F103单片机中定时器分为3种,高级定时器、通用定时器、基本定时器。

  通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。

通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括

  • 16位向上、向下、向上/向下自动装载计数器
  • 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值
  • 4个独立通道:
    • 输入捕获
    • 输出比较
    • PWM生成(边缘或中间对齐模式)
    • 单脉冲模式输出
  • 使用外部信号控制定时器和定时器互连的同步电路
  • 如下事件发生时产生中断/DMA:
    • 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
    • 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
    • 输入捕获
    • 输出比较
  • 支持针对定位的增量(正交)编码器和霍尔传感器电路
  • 触发输入作为外部时钟或者按周期的电流管理

  可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。计数器、自动装载寄存器和预分频器寄存器可以由软件读写,在计数器运行时仍可以读写。

void TIMER3_Init(u16 arr, u16 psc)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler = psc;TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);   //允许更新中断NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM3,ENABLE);
}
void TIM3_IRQHandler(void)
{if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET){TIM_ClearITPendingBit(TIM3,TIM_IT_Update);LED0=!LED0;}
}

  这里使用的是定时器3,在初始化时传递了两个参数,其中arr用来设置定时器的周期,PSC设置时钟的分频系数。默认定时器的时钟频率为72MHz,所以带入这两个参数后,定时器的周期计算公式为:
(arr+1)*(psc+1)/72MHz,设置定时器的计数模式为向上计数。这里开启了定时器的中断功能,所以还需要设置NVIC寄存器,也就是设置定时器的中断优先级。定时器初始化完成之后,还需要提供一个定时器的中断函数,当定时器定时时间到了以后,就会自动跳转到定时器中断函数中。

int main(void)
{u8 key = 0;delay_init();       //延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);LED_Init();KEY_Init();  TIMER3_Init(9,71);      //50Khz  10us   while(1){      }
}

  在主函数中初始化定时器,设置定时器分频数为71,默认的晶振频率为72MHz,进行71+1分频后的频率值为1Mhz,然后设置定时器的周期值为9+1,所以定时器的定时频率为1Mhz/(9+1)=100KHz,定时周期为10us。通过示波器观察LED管脚的电平,就可以看到LED管脚的电平每10us就会翻转一次。

STM32F103通用定时器使用相关推荐

  1. STM32F103通用定时器原理

    三种STM32定时器区别 声明:stm32f103c8t6中没有基本定时器.只有TIM1-TIM4:分别是高级定时器(TIM1)和通用定时器. 通用定时器的功能特点描述 计数器模式 通用定时器可以向上 ...

  2. STM32F103—使用通用定时器控制开关

    STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器.4个普通定时器.2个基本定时器.2个看门狗定时器.1个系统嘀嗒定时器 在除去看门狗定时器和系统滴答定时器的八个定时器中: TI ...

  3. STM32F103基本定时器使用

      STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器.   基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动.它们可以作为通用定时器提 ...

  4. STM32F103高级定时器使用

      STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器.   高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动.它适合多种用 ...

  5. 通用定时器产生PWM

    一.STM32F103 PWM介绍 STM32F1除了基本定时器TIM6和TIM7,其他定时器都可以产生PWM输出:其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出,而 ...

  6. STM32CubeMX学习笔记(24)——通用定时器接口使用(电容按键检测)

    一.电容按键简介 电容器(简称为电容)就是可以容纳电荷的器件,两个金属块中间隔一层绝缘体就可以构成一个最简单的电容.如图 32-1(俯视图),有两个金属片,之间有一个绝缘介质,这样就构成了一个电容.这 ...

  7. STM32F103利用定时器编程实现输出一路PWM波形

    目录 一.PWM简介 二.STM32F1 PWM介绍 三.PWM输出配置步骤 四.实现代码 五.实现效果 六.参考资料 一.PWM简介 PWM是 Pulse Width Modulation 的缩写, ...

  8. GD32通用定时器、高级定时器PWM输出例程

    通用定时器 /********************************************************************************************* ...

  9. stm32之通用定时器

    文章目录 定时器中断 定时器中断相关寄存器 定时器中断库函数 定时器中断的配置 PWM输出 PWM库函数 pwm配置步骤 输入捕获 库函数的配置 stm32f10x系列最多有8个定时器 3种定时器 1 ...

最新文章

  1. 漫谈云计算、虚拟化、容器化--云平台技术栈05
  2. HDU-2044-一只小蜜蜂
  3. dbms_rowid包的BUG问题
  4. sql and和in能连用吗_解析法律英语中【同义词连用】现象
  5. python实现全景图片拼接
  6. BuildIt: Visual Studio .NET 的自动生成工具
  7. python调用robotframework_robotframework+python接口自动化的点滴记录(2)
  8. python中math库最大值_python-math库解析
  9. 跨域问题:Access-Control-Allow-Origin
  10. 解决办法:无法安装 /lib/x86_64-linux-gnu/libpng12.so.0 的新版本
  11. 聊聊spring data jpa的JpaQueryLookupStrategy
  12. DVWA安装以及模块使用教程(一)
  13. 超详细excel键盘快捷键大全
  14. win10扬声器没有声音但插入耳机有声音
  15. 苏嵌//张朋//2018.07.23
  16. vue+element弹窗可拖拽拉伸和弹窗内table高度自适应
  17. Android open failed: ENOENT (No such file or directory)以及open failed: EISDIR (Is a directory)
  18. Pepper初级教程:第二章 Pepper的使用方法
  19. 神州数码无线产品(AC+AP)配置
  20. 实施金蝶ERP系统,破除信息系统壁垒

热门文章

  1. 常用脚本--在线重建或重整实例下所有索引
  2. socket编程,简单查看
  3. 第四周课程总结实验报告二
  4. Linux 生产者消费者简单例子学习
  5. 估值指标方法20190805
  6. SQL2008R2 收缩数据库问题 - 日志文件不变小
  7. wap手机网页html5通过特殊链接移动设备:打电话,发短信,发邮件详细教程
  8. [OC]TableView使用
  9. windows2000/xp运行命令全集
  10. 【Scala】Scala语言的介绍以及循环的定义(while,for,break,九九乘法表的计算代码)