因为毕业设计要用到PWM调光很久都没用到Stm32的定时器,有些内容已经遗忘,为了回顾复习相关内容今天开下通用定时器这一章节的数据手册。

1、时钟

通用定时器一般是TIM2~TIM5,TIM1、TIM8是高级定时器,TIM6、TIM7是基本定时器。

既然名字都叫定时器,时钟一定是最重要的,所以在看其相关工作模式和特性之前,先看下他的时钟。

通用定时器和基本定时器都是挂载在APB1时钟总线,这条时钟总线最大时钟频率36MHz。PCLK1经过倍频后供给通用定时器时钟,这里要注意的是,分频系数为1时TIMx_CLK=PCLK1,其他的分频系数无论多少只要不是1,TIMx_CLK=2*PCLK1。(关于这里为什么叫分频系数确是倍频作用,我猜测是因为翻译原因)。

这里注意的是,在MDK开发环境下,只要外部的晶振接的是8M,默认的系统时钟SYSCLK=72MHz,默认的PCLK1=36MHz,PCLK2=72Mhz。

所以,在配置定时器工作模式和管脚复用前,记得需先配置好时钟。(第一步)

2、定时器

接下来开始读数据手册:

定时器作为一种集成在芯片内部的外设,要把它当做一个独立的器件看待,因为是集成在内部所以供电管脚不用我们考虑,此外他具有4个独立的功能通道,可以复用到4个对应的GPIO引脚。独立的意思就是可以单独使用其中的一个。

每个通道都有四种功能,分别是:

  输入捕获:就是测量输入信号的脉冲长度。

  输出比较:

  PWM生成:有边缘和中间对齐模式。PWM的应用很广,在LED调光和PWM调速都有广泛应用,原理是通过控制占空比调节平均输出,需要结合高频率的开关器件使用。

  单脉冲模式输出:

因为毕业设计要用到PWM调光很久都没用到Stm32的定时器,有些内容已经遗忘,为了回顾复习相关内容今天开下通用定时器这一章节的数据手册。

1、时钟

通用定时器一般是TIM2~TIM5,TIM1、TIM8是高级定时器,TIM6、TIM7是基本定时器。

既然名字都叫定时器,时钟一定是最重要的,所以在看其相关工作模式和特性之前,先看下他的时钟。

通用定时器和基本定时器都是挂载在APB1时钟总线,这条时钟总线最大时钟频率36MHz。PCLK1经过倍频后供给通用定时器时钟,这里要注意的是,分频系数为1时TIMx_CLK=PCLK1,其他的分频系数无论多少只要不是1,TIMx_CLK=2*PCLK1。(关于这里为什么叫分频系数确是倍频作用,我猜测是因为翻译原因)。

这里注意的是,在MDK开发环境下,只要外部的晶振接的是8M,默认的系统时钟SYSCLK=72MHz,默认的PCLK1=36MHz,PCLK2=72Mhz。

所以,在配置定时器工作模式和管脚复用前,记得需先配置好时钟。(第一步)

2、定时器

接下来开始读数据手册:

定时器作为一种集成在芯片内部的外设,要把它当做一个独立的器件看待,因为是集成在内部所以供电管脚不用我们考虑,此外他具有4个独立的功能通道,可以复用到4个对应的GPIO引脚。独立的意思就是可以单独使用其中的一个。此外还有一个用于外部提供时钟源的时钟输入引脚ETR,一般不会用到。

每个通道都有四种功能,分别是:

  输入捕获:就是测量输入信号的脉冲长度。

  输出比较:

  PWM生成:有边缘和中间对齐模式。PWM的应用很广,在LED调光和PWM调速都有广泛应用,原理是通过控制占空比调节平均输出,需要结合高频率的开关器件使用。

  单脉冲模式输出:

时基单元由计数寄存器,预分频寄存器,自动装载寄存器组成,其中自动装载寄存器有个不可操作的对应的寄存器影子寄存器,我们不能对其读写,只能由cpu自动操作。这个自动装载寄存器就是用来保存每次更新的装载的值的,在我们想写入新的装载值时,CPU会自动写到预装载寄存器。

计数器是由预分频器的时钟CK_CNT驱动的,需要使能才有效,使能之后的一个时钟周期生效。(也就是说我们在设置预装载值时数值需要减1)

预分频器的作用就是在TIM_CLK的基础上再分频,这个寄存器也是有缓冲器的,在发生更新事件后把值写到预分频寄存器。

对于定时器这个外设,有一个叫做更新事件UEV的东东,在每次产生这个东西时,定时器所有的具有缓存功能的寄存器开始更新数值,把预装载的数写进去。这个更新事件可以由硬件产生(计数溢出计数值达到最大值),也可由软件产生,我们用指令控制EGR寄存器的UG位置高也可产生。灵活的在代码中应用这个功能,将会给编程带来极大的便利。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

分界线

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

一下子读了那么大一段还是很吃力,现在脑子很热,眼皮特别沉。还是看关键部分。

3、PWM模式

相关寄存器:TIMx_CCMRx----------------OCxM  PWM模式设置

            |---------------OCxPE  使能预装载寄存器

      TIMx_CR1-----------------APRE  使能自动重装载的预装载寄存器。

           TIMx_EGR--------------UG  在计数前设置UG位来初始化所有的寄存器

      TIMx_CCER--------------CCxP  可以设置OCx的极性(高/低电平有效)

            |-------------CCxE  控制OCx输出使能

计数器有三种计数模式分为向上/向下计数和向上向下交替计数,而PWM模式根据计数方式的不同分为两大类中央对齐模式(向上向下交替计数)以及边沿对齐模式,这两种模式是由其计数方式区分的。

而依据PWM波的产生原理,即CNT在0到ARR之间不断增加或减少期间一直与CCR进行比较,根据比较的结果输出高地电平。而比较结果对于输出的高地的影响有两种,一是CNT<=CCR时输出高电平,反之输出低电平,对应的是PWM1模式,二是CNT>=CCR时输出高电平,反之输出低电平,对应的是PWM2模式。

上面一句话解释得很清楚,PWM模式下不同PWM模式以及对齐模式的由来,对齐模式有关的寄存器是TIMx_CCR1寄存器

Stm32之通用定时器复习的更多相关文章

  1. STM32之通用定时器

    广大的互联网的大家早上中午晚上..又好..没错了..我又来了..写博客不是定时的..为什么我要提写博客不是定时的呢??聪明的人又猜到我要说什么了吧.有前途.其实我还是第一次听到定时器有通用和高级之分的 ...

  2. [stm32] STM32的通用定时器TIMx系统了解

    通用定时器(TIMx) 一.TIMx简介 二.TIMx主要功能 三.TIMx功能描述 3.1 时基单元 3.2 计数器模式 3.3 时钟选择 3.4 捕获/比较通道 3.5 输入捕获模式 3.6 PW ...

  3. stm32之通用定时器TIM

    STM32系列的CPU,有多达8个定时器: 1.其中TMI1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动:它们的时钟有APB2的输出产生: 2.其它6个为普通定时器,时钟由 ...

  4. 一文打尽PWM协议、PPM协议、PCM协议、SBUS协议、XBUS协议、DSM协议 | STM32的通用定时器TIM3实现PPM信号输出

    PWM.PPM.PCM.SBUS.XBUS.DSM都是接收机与其他设备通信的协议. 请注意这里不要将遥控器和接收机之间的协议混淆.遥控器和接收机之间会采用某种协议来互相沟通,这些协议往往各个厂牌各自有 ...

  5. stm32通用定时器中断问题

    在使用stm32的通用定时器定时中断的时候,发现定时器在完成初始化配置后,定时器UIF位会立刻置位,导致在使能中断后,程序会立刻进入定时器中断. 如果设计代码时不希望定时器配置完成后,立刻进入中断,可 ...

  6. STM32学习笔记——定时器中断(向原子哥学习)

    定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...

  7. STM32F103单片机学习—— 通用定时器

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fengshuiyue/article/details/79150724 本篇重点记录的是STM32F ...

  8. STM32通用定时器(转载)

    STM32的定时器功能很强大,学习起来也很费劲儿. 其实手册讲的还是挺全面的,只是无奈TIMER的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){看手册-}才搞明 ...

  9. STM32学习笔记(五)——通用定时器计数延时

    STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器.通用定时器和高级定时器.它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就 ...

随机推荐

  1. 一。Hibernate 开发流程

    一.hibernate和mybatis都是orm产品1.orm:object-realation-mapping对象关系映射 二.开发步骤1.导入相关jar 包括hibernate和oracle的驱动 ...

  2. IP包头结构详解

    版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6) IP包头长度(Header Length):长度4比特.这个字段的作用是为了 ...

  3. 移除 iview的Table组件固定两头后box-shadow阴影效果

    .ivu-table-fixed{ box-shadow:0 0 0 #fff; }

  4. NIO的初步入门

    NIO java NIO简介 Java NIO 简介 是从java1.4版本开始引入的一个新的IO AP可以替代标准java  IO API NIO与原来的IO有同样的作用和目的,但是使用方式完全不同 ...

  5. x86汇编寄存器,函数参数入栈说明

    https://en.wikipedia.org/wiki/X86_calling_conventions

  6. vue 倒计时组件

    <template> <span> <i v-text="msg"></i> </span></template& ...

  7. Debian社区群龙无首

    导读 前两天有过消息 Debian 包维护者 Michael Stapelberg 因对 Debian 社区的现状不满而宣布退出 Debian 的维护,该消息引发了人们对于 Debian 的担忧.11 ...

  8. 【MT】牛津的MT教程

    Preamble This repository contains the lecture slides and course description for the Deep Natural Lan ...

  9. TOP按钮

    TOP按钮 博客园页面添加返回顶部TOP按钮 进入网页管理->设置 在"页面定制CSS代码"中添加如下css样式,当然你可以改为自己喜欢的样式 此处可以将背景色backgro ...

  10. 「洛谷3338」「ZJOI2014」力【FFT】

    题目链接 [BZOJ] [洛谷] 题解 首先我们需要对这个式子进行化简,否则对着这么大一坨东西只能暴力... \[F_i=\sum_{j<i} \frac{q_iq_j}{(i-j)^2}-\s ...