因为毕业设计要用到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寄存器

转载于:https://www.cnblogs.com/geekj/p/10644702.html

Stm32之通用定时器复习相关推荐

  1. 【STM32】通用定时器的PWM输出(实例:PWM输出)

    STM32F1xx官方资料: <STM32中文参考手册V10>-第14章  通用定时器 通用定时器PWM概述 STM32定时器输出通道引脚 这里以TIM3为例来讲解.STM32的通用定时器 ...

  2. 【STM32】通用定时器(TIM2到TIM5)

    00. 目录 文章目录 00. 目录 01. 通用定时器简介 02. TIM2到TIM5主要特性 03. TIM2到TIM5功能说明 04. 时钟选择 05. 寄存器 5.1 TIMx 控制寄存器 1 ...

  3. 【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制

    继电器是我们生活中常用的一种控制设备,通俗的意义上来说就是开关,在条件满足的情况下关闭或者开启.继电器的开关特性在很多控制系统尤其是离散的控制系统中得到广泛的应用.从另一个角度来说,由于为某一个用途设 ...

  4. stm32关于通用定时器的周期、频率计算公式

    以下内容针对正点原子的定时器中断实验 定时器时基单元包含: ● 计数器寄存器(TIMx_CNT) ● 预分频器寄存器 (TIMx_PSC)--该寄存器用设置对时钟进行分频,然后提供给计数器,作为计数器 ...

  5. stm32之通用定时器

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

  6. STM32之通用定时器编码器模式

    1.编码器原理 如果两个信号相位差为90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向.根据每个信号脉冲数量的多少及整个编码轮的周长就可以算出当前行走的距 ...

  7. STM32之通用定时器输入捕获模式

    #include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config() {  ErrorStatus HSEStartUpStatus; /* ...

  8. STM32之通用定时器输出比较模式

     #include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config() {  ErrorStatus HSEStartUpStatus; ...

  9. STM32之通用定时器计数器模式

    #include "stm32f10x.h"/* RCC时钟配置 */ void RCC_config() { ErrorStatus HSEStartUpStatus;/* RC ...

最新文章

  1. php打印四边形,用php的for循环输出四边形,各种三角形和菱形【含空心版本】
  2. 在windows上解压linux文件夹,Win10如何使用命令行来解压缩文件?
  3. linux全局变量=多个值,linux errno全局变量各值含义
  4. Java中Socket通信-客户端向服务端发送照片
  5. 服务器修改mime类型,服务器上没有设置mime类型
  6. matlab 判断文件有多少行,在Matlab中有没有办法确定文件中的行数,而不是循环遍历每一行?...
  7. LeetCode 刷题笔记 (树)
  8. 玩ts要注意什么_幼儿园装修要注意什么
  9. vue文件里在style的样式需要什么loader_Vue学习笔记之Webpack中css、less、图片等文件处理...
  10. DiskGenius的 “终止位置参数溢出”错误解决方法。
  11. 甘特图制作_使用excel制作甘特图其实很简单,仅需4步搞定,项目进度一目了然...
  12. win10 安装低版本的 .net framework
  13. 简易的文件上传 tp5
  14. linux动态鼠标光标,自定义鼠标光标---Linux Mint 18.2 Sonya系统
  15. mongoDB下载安装
  16. mysql数据库之mmm
  17. 平板有必要买触控笔吗?好用又便宜的触控笔推荐
  18. Succi - 用python做皇帝的棋盘
  19. 大学c语言基础 Turbo C2.0 (32位/64位通用)
  20. 工作N年的开发者更该写博客 —— 记参加CSDN开发者生态汇

热门文章

  1. jmeter和oracle,jmeter测试Oracle数据库
  2. php而且,PHP – David's Blog
  3. wordpress ?php the_time() ?,WordPress时间函数the_time与get_the_time解析
  4. 农场管理系统设计与实现php,农场农产品网站的设计与实现(PHP,MySQL)(含录像)
  5. Sphinx——自动生成Python文档
  6. 面向对象方法的优势简化软件开发的过程_Java面试题说一说你的对面向过程和面向对象的理解...
  7. 计算机小知识点GIF,计算机基础全部知识点 讲解.doc
  8. 快速稳定服务器,稳定又快速服务器工具推荐
  9. corn java 可配置_定时任务工具——CronUtil
  10. jinfo命令 Java Configuration Info