介绍

STM32F103ZET6 定时器资源非常丰富,根据 datasheet 描述,涵盖如下几种类型:

  • 高级定时器 TIM1 / TIM8
  • 通用定时器 TIM2 / TIM3 / TIM4 / TIM5
  • 基本定时器 TIM6/ TIM7

本次描述的重点是基本定时器 TIM6/ TIM7

基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源。

时钟

可以看到来自 APB1 的低频时钟经过频率x2供给了 TIM2~TIM7,其中包含了 TIM6/ TIM7,所以供给此部分的时钟为 72MHz

在 TIM6 / TIM7 中存在一个预分频器,支持输入的时钟进行预分频,计数器使用预分频后的时钟进行计数:

预分频的参数配置支持 1~65536

模式

TIM6 / TIM7 支持基本的循环计数,计数方式是从小到大。并且可以支持在任何时间内进行预分频系数的配置,配置在下一个UEV产生后生效。(UEV指的是一个更新时间,即一次计数溢出,当然,也可以支持软件进行主动触发)

可以支持 auto reload 和 one shot 的模式,即计数器完成一次计数之后,是自动重载之前的值,继续计数,还是完成一次计数任务后,停止计数。通过配置 TIMx_CR1 的 OPM单脉冲模式 (One-pulse mode) 来选择:

中断

可以通过配置中断,来达到计数器上溢出时刻产生对应的中断

配置过程

1. 打开 TIM6 / TIM7 的时钟

2. 配置中断优先级 NVIC 并使能中断

3. 配置分频系数和计数器的达到溢出的上限数值

4. 启用自动重装载预装载

5. 选择auto reload模式

6. 选择更新源(全开)

7. 开启溢出中断

8. 使能定时器

代码

初始化部分

这里 72MHz 的时钟输入,预分频为 7200(7200 - 1,这里是 datasheet中描述的预分频计算方法),计数为10000次溢出,故产生的是 1s 的定时器:

#define TIM6_CNT    (10000 - 1)
#define TIM6_PSC    (7200 - 1)
static SK_TIM6_NVICConifg(void)
{NVIC_InitTypeDef NVIC_InitStructure;/* PE5/PE6 */NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}void SK_TIM6_Init(void)
{   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;SK_TIM6_NVICConifg();/// Step 1 : Open TIM6&TIM7 ClockRCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);/// Step 2 : Set basic settings// Input CLOCK = 72MHzTIM_TimeBaseStructure.TIM_Period = TIM6_CNT;TIM_TimeBaseStructure.TIM_Prescaler = TIM6_PSC;TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);TIM_ARRPreloadConfig(TIM6, ENABLE);TIM_SelectOnePulseMode(TIM6, TIM_OPMode_Repetitive);TIM_UpdateRequestConfig(TIM6, TIM_UpdateSource_Global);TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);TIM_Cmd(TIM6, ENABLE);
}
中断处理部分
void TIM6_IRQHandler(void)
{static uint8_t cnt = 0;if (TIM_GetITStatus(TIM6, TIM_IT_Update)){TIM_ClearITPendingBit(TIM6, TIM_IT_Update);if (!cnt){SK_SetLedStatus(SK_LED_1, SK_LED_ON);cnt++;}else{SK_SetLedStatus(SK_LED_1, SK_LED_OFF);cnt--;}}
}

STM32F103ZET6 — TIM6/TIM7相关推荐

  1. stm32学习笔记——通用计时器基本原理

    stm32f10x最多有8个定时器,stm32f103zet6就有8个定时器,分别是4个通用定时器,2个高级定时器,2个基本定时器. 定时器种类         位数 计时器模式 产生DMA请求 捕获 ...

  2. STM32-通用定时器-定时器中断

    1 STM32的定时器 STM32F103ZET6一共有8个定时器,其中分别为:高级定时器(TIM1.TIM8):通用定时器(TIM2.TIM3.TIM4.TIM5):基本定时器(TIM6.TIM7) ...

  3. STM32-通用定时器基本定时功能

    1.     STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器.其中系统嘀嗒定时器是前文中所 ...

  4. STM32定时器学习---基本定时器

    STM32F1系列的产品,除了互联型产品外,工位8个定时器  TIM6.TIM7:基本定时器  TIM2/3/4/5:通用定时器  TIM1.TIM8:高级定时器 三种定时器的区别:  基本定时器:  ...

  5. 【STM32】定时器相关函数和类型

    00. 目录 文章目录 00. 目录 01. TIM概述 02. 相关类型 03. 相关函数 04. 结构体封装 05. 附录 06. 声明 01. TIM概述 stm32f4xx_tim.h和stm ...

  6. stm32h7高速通信_【STM32H7教程】第75章 STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)...

    第75章       STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V) 本章节为大家讲解标准SPI接线方式驱动模数转换器DAC8501,制作了中断和DMA两种 ...

  7. STM32H7时钟树RCC分析---原理讲解(一)

    STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0.M3.M4和 M7 这几种,每个内核又大概分为主流.高性能和低功耗. 用HAL库配置请看:STM32H7时钟树分析- ...

  8. STM32F103单片机JTAG端口重映射

    STM32单片机复位后,JTAG口默认是被占用的.如果想将JTAG占用的几个IO口设置为普通IO口,就需要进行端口重映射. 复位后端口默认功能可以在STM32参考手册上看到 要将JTAG占用的这些口设 ...

  9. STM32【H7】理论——综述、HAL库简述

    文章目录 1. STM32H7芯片简介 1.1 STM32H7与STM32F1.F4系列芯片的区别 1.2 硬件框图 1.3 STM32H7各型号对比 1.4 总线框图和时钟 1.5 AXI总线 1. ...

最新文章

  1. 杰奇数据库mysql_杰奇模板出现Unable to save result set in…可尝试修复数据库
  2. [转] Windows 下校验 Fedora 安装文件
  3. python-day8-赋值
  4. 举例说明Java中代码块的执行顺序
  5. linux文件压缩包,linux目录文件压缩包操作
  6. 绚丽风车loading动效分析与实现!
  7. Windows说明Linux分区和挂载点
  8. [转]IIS状态代码的含义
  9. IDEA几款不错的基于Darcula的深色主题
  10. 2020中级会计师考试教材
  11. html5中国产业联盟,中软国际联合发起HTML5+联盟为产业生态服务
  12. 计算机如何连接iphone,iphone怎么连接到电脑的方法详解【图文】
  13. 屏幕小于6英寸的手机_6英寸是多大?6英寸是多少厘米?
  14. C语言:goto循环语句
  15. 真无线蓝牙耳机性价比高?真无线蓝牙耳机性价比排行
  16. 获取Windows操作系统版本和位数
  17. 深度探索C++对象模型笔记
  18. (私人收藏)2019WER积木教育机器人赛(普及赛)解决方案-(全套)获取能源核心
  19. 复习计算机二级 Excel常用函数公式
  20. 生物启发式AI系统:超越纯视觉识别,融合体感的手势识别更精准

热门文章

  1. iOS LaunchScreen设置启动图片 启动页停留时间
  2. 2016跨境电商五大物流模式盘点
  3. RedHat AS 4 下安装千千静国庆版4.6.0
  4. LeetCode 160. 相交链表(c++实现)
  5. Microsoft Remote Desktop 10.2.9(1575) Mac 优秀的远程桌面工具
  6. 防火墙技术之安全策略
  7. C语言 goto语句
  8. 被hao123劫持后该如何解决
  9. LLM 大规模语言模型综述
  10. PHP中需要安装了PDFlib才可使用PDF。