目录

1.定时器简介:

2.时基单元:

3.定时器资源:

3.1:基本定时器

3.2:通用定时器

4.总结:


1.定时器简介:

从字面来看,定时器就是用来计时的机器, 可以通过计时来触发中断或者事件。

2.时基单元:

定时器计时是通过时基单元来实现的,时基单元主要包括:预分频器(PSC),计数器(CNT),自动重装器(ARR)。这三个单元都是16位的,也就是说它们的取值范围都是0~65535,具体实现的功能在下面会提到。

计数器分三种模式:

1.向上计数:从某个数(初值)减到零,产生一个计数器更新事件后重装载初值;

2.向下计数:从零加到某个数(终值),产生一个计数器更新事件后重装载零;

3.中央对齐:也叫向上/向下计数模式;计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)−1,产生一个计数器更新事件,然后向下计数到1并且产生一个计数器更新事件;然后再从0开始重新计数。

3.定时器资源:

定时器分为三种,分别是基本定时器,通用定时器,高级定时器,这三个定时器分别有着不同的功能

在c8t6中,一共有四个定时器,分别是高级定时器(TIM1),通用定时器(TIM2,TIM3,TIM4)。

3.1:基本定时器

虽然说c8t6并没有搭载基本定时器,但是通过基本定时器理解时基单元会更清晰一些。

基本定时器中有三个重要的寄存器,分别是预分频器、计数器、自动重装寄存器,构成了最基本的计数计时电路,这块电路叫做时基单元。

预分频器(PSC): 从图中可以看见,时基单元的输入连接的是CK_INT,来源是RCC_TIMxCLK,频率值一般都是系统的主频72MHz。 预分频器可以将72MHZ分频,要注意的是,这个寄存器写入的值是实际分频程度-1,例如1分频,也就是不分频时,PSC的值为0;要2分频输出36MHZ的频率时,PSC的值为1。所以输出频率=输入频率/(PSC+1)。

计数器(CNT):可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1,因为计数器是16位,范围在0~65535,超过65535,计数器就会回到0重新开始。

自动重装载器(ARR):是计数器计数的目标值,当计数到自动重装载值时,就会产生中断开始下一次计时。

在此补充一下,hz是频率的单位,1hz就是每秒1次,60hz就是每秒60次,单位的换算:1mhz=1000000hz。所以72MHZ的意思就是每秒有72000000次方波。

3.2:通用定时器

通用定时器的框图就要复杂很多了,很多东西我也不太清楚,对照框图大概说一下

通用定时器的四大部分(红框):

①:时钟产生部分: a.内部时钟

b.外部时钟挂载:ETR引脚

通过引脚定义图可以看到,ETR引脚是在PA0上的,也就是我们如果要外接外部时钟,接在ETR引脚上就可以了

c.ch1引脚的边沿

d.ch1引脚和ch2引脚

其实目前来说用的最多的就是内部时钟了,其他几个了解一下就可以了。

 ②:时基单元:这一部分和基本定时器一样,前面已经说过了。

③:输入捕获部分:输入捕获可以通过检测通道输入引脚出现的指定电平跳变,通过计时器内部计时测量PWM波形的频率、占空比、脉冲问题、电平持续时间等参数。后面的章节会讲到

④:输出比较部分:输出比较可以通过CNT与比较(CCR)寄存器的关系来对输出电平进行置1,置0或翻转的操作,用于输出一定频率和占空比的PWM波形。

高级定时器就不说了,因为我也没有用过,以后用到的话会补充。

4.总结:

定时器的结构看起来很复杂,但在我们应用的时候相对会简单一些,只需要进行一些简单的计算,修改PSC,ARR,CCR的值就可以达到我们想要的效果。

嵌入式学习——stm32(3.1)定时器基础相关推荐

  1. 嵌入式学习⑤——STM32嵌入式应用系统设计

    目录 前言 一.基于跨平台多类型代码编辑器VScode 1.VScode的安装 2.Ubuntu中用vscode编译调试C\C++ 二.Proteus仿真--STM32流水灯 1.创建工程 2.配置实 ...

  2. 基于STM32G431嵌入式学习笔记——七、定时器定时

    一.题目引入 上述为第13届蓝桥杯省赛节选内容,为了研究定时器的机理并独立书写计时函数,上述内容简化为以下要求: ①按下B4按键,LD1点亮5s后熄灭 ②按下B3按键,LD2以0.1秒为间隔切换亮灭状 ...

  3. 嵌入式学习之TCP和UDP基础理解

    鸡汤:若有一个柠檬,那就做成柠檬水. 学习梳理目录: 1. 传输层的作用2. 端口的理解3. UDP学习4. TCP学习5. UDP首部学习6. TCP首部学习 传输层的作用 首先应说明的是TCP/I ...

  4. 蓝桥杯嵌入式学习STM32之外部中断EXTI详解

    先说点题外话. !是取逻辑反的意思, ~是按位取反的意思 !0x01=0: ~0x01=1111 1110; 进入正题 基本概念 STM32的每个IO都可以作为外部中断输入. STM32的中断控制器支 ...

  5. 嵌入式学习——stm32(2.2)中断实验

    在上一篇说到了配置外部中断需要依次配置GPIO->AFIO->EXTI->NVIC,现在我们以按键通过外部中断控制灯的亮做例子. 目录 1.GPIO的配置 2.AFIO的配置 3.E ...

  6. 嵌入式学习——stm32(1.2)GPIO应用

    1.GPIO的初始化: 逻辑: 1.使能时钟 2.引用结构体 3.配置结构体 4.调用库函数进行初始化 时钟使能: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO ...

  7. STM32的定时器详解(嵌入式学习)

    STM32的定时器详解 0. 前言 1. Systick定时器 概念 工作原理 时钟基准 Systick练习 2. HAL_Delay函数分析 3. 定时器 基本概念 定时器分类 定时器组成 计数器 ...

  8. 嵌入式学习笔记——STM32的USART通信概述

    文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...

  9. 知乎嵌入式大杂烩:学习STM32的一点经验分享

    前言 前两天在群里看到群友们在讨论学习STM32的话题,并且今天也有一位机械专业的准研究生也问了STM32的入门问题.正好我也有一点经验,所以试着分享一下这个话题.我也不是什么大神,只是一名普通的工程 ...

最新文章

  1. Caffe源码中caffe.proto文件分析
  2. 每个人都有一个“内外引擎”
  3. 来活儿了!赶紧检查下代码里有没有脏话...
  4. spaugment--生成最小二乘增广矩阵
  5. 锻炼产品架构思维的4个维度
  6. 增加数据_数据来了!集装箱运量猛增,到底增加了多少!?
  7. vb.net 弹出对话框 修改按钮名_Microsoft Excel怎么批量快速修改批注?
  8. 用Alamofire进行网络请求的一段代码解析(一)
  9. html4音频插件,js音频插件audio.js
  10. ARM 汇编详解 -- 体系结构与编程
  11. 技术经理应该具备哪些方面的能力
  12. 对近来安庆天气特征的总结(夏季)
  13. Kali渗透Windows Server 2003
  14. 腾讯bugly的使用,以及全局抓包配置
  15. 从智慧零售,看腾讯的数字化转型之道
  16. 编译低版本的binutils-2.16.1错误:ld.texinfo:1592: @itemx must follow @item
  17. html 字体模糊,详解css3使用transform出现字体模糊的解决办法
  18. arduino uno r3单片机封装图_Arduino教程 Lesson 1 驱动安装及下载Blink程序
  19. 巴特沃斯滤波器使用-butter
  20. U盘装Ubuntu系统报错Failed to load ldlinux.c32

热门文章

  1. 正则表达式:一张图入门级了解正则表达式
  2. Linux·C语言高级编程·attribute和section详解
  3. AFNetworking网络请求详解
  4. 易观千帆 | 2022年10月银行APP月活跃用户规模盘点
  5. python numpy opencv调整图片亮度对比度饱和度
  6. Baidu Apollo代码解析之EM Planner中的QP Speed Optimizer 1
  7. 学生认证申请专业版的JetBrains系列产品
  8. 导向标识系统的发展趋势-技术化
  9. 6 款最优秀,数据最全,免费,稳定,各类场景均适合的天气 API
  10. ajax 上传文件到php