STM32定时器自学笔记

发布者:算法之手最新更新时间:2017-10-29 来源: eefocus关键字:stm32  定时器 手机看文章 扫描二维码
随时随地手机看文章

看STM32定时器一个多星期,真是乱啊。各种模式的说。这也主要是我们对定时器的各种模式的应用不是很了解。而我们对定时器的基础部分则是上手很快。就是定时器定时完成后的更新事件中断。捕获,比较这些还说得过去,再后来的从模式、触发、霍尔传感器和编码器等直接就乱了,更不用说高级定时器中的刹车、死区、互补等。

而我看定时器则是看了通用定时器,主要是刹车,编码器等这些对于我来说应用得少,即使哪天用到了也忘了。看了通用定时器不少于4次。总算能够理理清楚了。以下慢慢说。

通用定时器有以下一些模式:

计数模式(向上计数,向下计数,中央对齐计数)

捕获比较模式:  (捕获)1、输入捕获模式

2、PWM输入模式

(比较)1、强制输出模式

2、比较输出模式

3、PWM模式

4、单脉冲模式

编码器模式

从模式   1、复位模式

2、门控模式

3、触发模式

4、外部时钟模式+触发模式

主模式

时钟: 1、内部时钟

2、外部时钟1

2、外部时钟2

这里只为了更好的理解,而更多的细节还得参照数据手册,并且定时器确实看一次有一次新的认识,所以不确定完全正确。

首先在定时器给定的内部图中可以看出所有模式的对应关系,当对定时器有一定了解时可以更加清楚的认识该图。[转载]【原创】STM32定时器自学笔记


为了不杂乱无章,我们只分析一下图。

图中有阴影的部分都是有一影子寄存器的,并且是可使能的。而在PWM模式中影子寄存器是必须打开的。

再看图的左边分别为TIMX_ETR,TIMX_CH1,TIMX_CH2...这些引脚分别为输入引脚,而TIMX_ETR为触发引脚,暂时不管它们是做什么的,再看右边的TIMX_CH1这些分别为比较输出引脚。

一般在数据手册的时钟向后就开始乱了,定时器有三种时钟(书中写了四种,其实第四种就是第二种内的一种),可看图上方一矩形,内有“触发控制器,从模式控制器,编码器”。

1、可以看到内部时钟(CK_INT)连接到此矩形上。

2、外部触发引脚TIMX_ETR引脚经过滤波等处理形成ETRF信号也连接到此(由它可提供外部时钟模式2所说的时钟,同时它可以触发的作用)

3、再看ITR0,ITR1等信号也连接到此矩形中,这些信号为其它定时器输出的信号。(这也是手册中所讲使用一个定时器作为另一个定时器的预分频,那么驱动此定时器的定时器为主定时器,必须配置TIMX_CR2中的MMS位来确定它输出什么样的信号给从定时器。通过设置TIMX_SMCR中的TS位来选择哪个定时器来驱动当前定时器)

4、而TIMX_CH1~CH4也可以配置为触发输入引脚,也可以为定时器来提供时钟。

在TIMX_SMCR(从模式控制寄存器)中SMS中设置为000(关闭从模式)则使能定时器时时钟则由内部时钟提供。当配置了SMS位为非零值,并且在TS位中选择了输入引脚,并且使能了相关的时钟则会使用该引脚上的某个边沿或者某个电平来驱动计数器计数,而外部时钟2则只能由ETR来提供时钟,外部时钟1也可以由ETR来提供,或者其它引脚提供。

而这除内部时钟外,其它连接到从模式控制器的引脚(编码器不清楚,没有看,以下所写和它无关)不但可以提供时钟外,也可以产生相应的事件,如关闭时钟模式2和不选中时钟模式1的情况下,外部触发引脚(其它输入引脚也可以)还可以复位计数器、启动计数器等。

而CH1~CH4则可以控制从模式,同时它可以作为一个捕获信号的输入,此时可以关闭从模式,或者开启从模式中的时钟模式1输入的信号会使当前的计数器的值保存到CCR寄存器中。

输出CH1~CH4则通过设置CCR寄存器的值则是输出所设定的电平。当定时器设置为主模式时输出的0CXREF将在内部输出到从模式定时器中,从模式定时器将产生SMCR中SMS所设置的事件。

讲了这么多,自己都乱了。总而方之就是输入的引脚一般都工作为从模式,即定时器的计数器由这些引脚来绝定计数或者停止的。(我个人理解)

这些引脚可以为使内部定时器根据外部引脚的某个极性计数,即外部时钟模式。

这些引脚输入的信号可以使内部计数器复位、开启、关闭等。

这些引脚可以是外部提供,也可以是内部其它定时器的某个事件产生的输出或者比较输出来驱动当前定时器。


关键字:stm32  定时器 引用地址:STM32定时器自学笔记

上一篇:STM32的ADC和串口
下一篇:STM32学习——低功耗模式

推荐阅读最新更新时间:2024-03-16 15:42

STM32系统时钟树分析
下面是一个STM32芯片的时钟树图 1、LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。 2、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。 3、HSE是高速外部时钟,课接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。我们开发板接的是8M的晶振。HSE也可以直接作为系统时钟或者PLL输入。 4、HSI是高速内部时钟,RC振荡器,频率为16MHz。可以直接作为系统时钟或者用作PLL输入。 5、PLL为锁相环倍频输出。STM32F4有两个PLL: (1)主PLL由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。 第一个输出P
[单片机]
<font color='red'>STM32</font>系统时钟树分析
STM32学习手记②-USART中断
/************************************ * 文件名: main.c * 内容简述: 本例程演示如何操作USART的接收程序(中断模式)。 * 用串口调试软件向开发板发送一字节,开发板会将该字节反发回PC */ #include stm32f10x_lib.h /*************************************************** * 函数名称 :void RCC_Configuration() * 功能描述 : 复位和时钟控制 配置 * 参数 : 无 * 返回值 : 无 * 全局变量 : 无 * 全局静态变量: 无 * 局部静态变量: 无 ***
[单片机]
stm32的IO模式具体意义
Ⅰ、写在前面 在开发STM32的时候,都需要对IO的模式进行配置(GPIO_InitStructure. GPIO_Mode = xxx)。但是,你们都知道各种模式的具体意义吗? 有的人问:IO口输出可以上拉吗? 开漏输出是干什么用的? 其实这些问题并不难,只要你了解到每一种模式的真正意思,相信这些问题都不会难道你。本文的内容比较基础,也比较实用,希望对你有所帮助。 关于本文的详细内容请看下面章节 Ⅱ、模式说明 STM32芯片的IO有8中模式: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上
[单片机]
<font color='red'>stm32</font>的IO模式具体意义
STM32的i2c容易出的问题 和l3g4200d例程
调试了一晚上,终于一点点把stm32可怕的i2c消灭了,这里分享一下遇到的问题。 最严重的一次卡住居然是在这句话上 /* Send START condition */ I2C_GenerateSTART(I2C1, ENABLE); /* Test on EV5 and clear it */ while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); 执行到第二句就怎么也过不去了,后来才很气愤的发现这是stm32的硬件bug,把fsmc关掉才能使用i2c1的非重影射引脚,关掉以后一切正常。害得我干瞪了两个小时屏幕。 第二次被卡住是在 I2C_Send7bitAdd
[单片机]
STM8学习笔记——定时器定时功能和中断相关
定时器都差不多,无非就是计数,溢出了标志置位,如果中断允许的话产生一个中断。说到中断,STM8S105的中断向量表如下 时基单元: 在选用内部时钟的情况下,CK_PSC是由fmaster提供的,经过定时器预分频器分频产生CK_CNT时钟,然后作为一次计数的时基,举个例子,16M的内部RC,经过16分频,则CK_CNT为1M,那么定时1ms只需计数1000次。 计数模式: 共有三种:向上,向下,中央对齐 以向上计数为例:计数器从0计数到用户定义的比较值(TIMx_ARR寄存器的值),然后重新从0开始计数并产生一个计数器溢出事件,同时,如果TIM1_CR1寄存器的UDIS位是0,将会产生一个更新事件(U
[单片机]
STM32的IIC应用详解1
概要 IIC(IIC,inter-Integrated circuit),两线式串行总线,用于MCU和外设间的通信。 IIC只需两根线:数据线SDA和时钟线SCL。以半双工方式实现MCU和外设之间数据传输,速度可达400kbps。 多主机I2C总线结构 注意SDA和SCL两根总线需要上拉,使总线处于空闲状态。 IIC协议 空闲状态 协议规定,SDA和SCL同时为高电平时,总线处于空闲状态。上拉电阻保证电平处于高电平。 起始信号和停止信号 起始信号:SCL为高电平时,SDA电平发生高到低的跳变 停止信号:SCL为高电平时,SDA电平发生低到高的跳变 应答信号 发送器每发送完一个字节(8个脉冲),在第9个脉
[单片机]
<font color='red'>STM32</font>的IIC应用详解1
stm32汇编实例
例子一 1 ;RCC寄存器地址映像 2 RCC_BASE EQU 0x40021000 3 RCC_CR EQU (RCC_BASE + 0x00) 4 RCC_CFGR EQU (RCC_BASE + 0x04) 5 RCC_CIR EQU (RCC_BASE + 0x08) 6 RCC_APB2RSTR EQU (RCC_BASE + 0x0C) 7 RCC_APB1RSTR EQU (RCC_BASE + 0x10) 8 RCC_AHBENR EQ
[单片机]
<font color='red'>stm32</font>汇编实例
STM32为什么需要位带操作呢?
为什么需要位带操作? 因为编程需要操作某个bit位来达到我们想要的功能,比如点灯需要操作GPIOA- ODR 的某个bit假设是第2bit,写1就可以让GPIO输出一个高电平。 GPIOA- ODR |= 1 2; 这样写其实有三个隐含的操作: //1.读取ODR寄存器的值到内存//2.改写第2bit的值//3.再把改写后的值写进ODR寄存器 这样的缺点:效率低 位带操作就是为了解决这个问题,前提是硬件支持这么做。 位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。51 单片机中通过关键字 sbit 来实现位定义,STM32没有这样的关键字,而是通过访问位带别名区来实现,例如 sbit LED P1^2LE
[单片机]
<font color='red'>STM32</font>为什么需要位带操作呢?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved