分享STM32定时器输出比较模式的理解

发布者:as8849402最新更新时间:2023-07-18 来源: elecfans关键字:STM32  定时器输出  比较模式 手机看文章 扫描二维码
随时随地手机看文章

初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地方,还请指出。


TIM_OCMode选择定时器模式。该参数取值见下表:

分享STM32定时器输出比较模式的理解

TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //设置跳变值,当计数器计数到这个值时,电平发生跳变

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIMx在CCR1上的预装载寄存器 TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIMx在ARR上的预装载寄存器

OCxREF就是一个参考信号,并且约定:OCxREF=1,称OCxREF有效。反之,OCxREF=0,称OCxREF无效;‘1’电平(高电平)称为OCxREF的有效电平,‘0’ 电平(低电平)称为OCxREF的无效电平。——依据参考手册:The output stage generates an intermediate waveform which is then used for reference:OCxRef (active high). The polarity acts at the end of the chain.(翻译)输出阶段产生一个中间波形OCxRef(高有效)作为参考。输出信号的极性体现在信号链的末端。

现在解释几个名词之间的关系:

分享STM32定时器输出比较模式的理解

然后来理解输出比较的几个模式(PWM模式是输出比较模式的特例)查看TIMx_CCMR1寄存器的OC1M域,有如下定义(摘自最新版的参考手册

翻译如下:000:冻结——输出比较寄存器TIMx_CCR1中的内容与计数器TIMx_CNT中的内容之间的比较对输出无影响。(此模式用于时基的生成)001:当匹配时,设置通道1为有效电平。当计数器TIMx_CNT中的内容与捕捉/比较寄存器1(TIMx_CCR1)中的内容相匹配时,强行拉高OC1REF 信号。010:当匹配时,设置通道1为无效电平。当计数器TIMx_CNT中的内容与捕捉/比较寄存器1(TIMx_CCR1)中的内容相匹配时,强行拉低OC1REF 信号。011:翻转——当TIMx_CNT= TIMx_CCR1时,OC1REF信号取反。100:强制无效电平——强行拉低OC1REF 信号。101:强制有效电平——强行拉高OC1REF 信号。110:PWM模式1——向上计数模式中,只要TIMx_CNT< TIMx_CCR1,通道1有效,反之无效。向下计数模式中,只要TIMx_CNT> TIMx_CCR1,通道1无效(OC1REF=0),反之有效(OC1REF=1)。110:PWM模式2——向上计数模式中,只要TIMx_CNT< TIMx_CCR1,通道1无效,反之有效。向下计数模式中,只要TIMx_CNT> TIMx_CCR1,通道1有效,反之无效。我用红色标出了提到有效、无效的地方。不难发现,有效与无效分别对应OC1REF=1和OC1REF=0。这正是我们先前约定的结果。到此,不同模式下输出比较的结果对OC1REF信号的影响已经很清楚了,但是最终的输出信号是OC1,并不是OC1REF。而且前面有一句话(输出信号的极性体现在信号链的末端)还未做解释。到底OC1REF与OC1之间有何秘密呢?我们来看下面这个图:

显然,我们只关心红色圈内的信号与方框内的寄存器位以及信号在它们之间是如何传播的。oc1ref从输出模式控制器(Output mode controller)开始,分为两路,上面一路至主模式控制器(To the master mode controller),这里我们不关心它的去向,我们关心的是下面一路,下面一路在进入双路开关之前又被分成了两路——一路是原信号,一路是原信号的非。显然TIMx_CCER中的CC1P位用来控制这个开关,CC1E位控制着整条信号链的通断。当CC1P=0时(CC1E=1):

当CC1P=1时(CC1E=1):

分享STM32定时器输出比较模式的理解

很显然,OC1与OC1REF的关系只受CC1P的影响(CC1E=1)

然而参考手册上对CC1P位是这么描述的:

CC1P=0时:OC1高电平有效CC1P=1时:OC1低电平有效根据本文开篇的名词解释,可以这么理解:CC1P=0时:OC1有效电平是高电平CC1P=1时:OC1有效电平是低电平这时就迷惑了,这个高电平有效和低电平有效是啥意思呢?我们从头分析(整个过程CC1E=1,OC1的输出是允许的):①假定OC1REF有效(OC1REF=1),那么从OC1REF到OC1的整条信号链上的信号都是有效信号,我们称OC1输出了有效信号。那这个有效信号是高电平还是低电平呢?这就是由CC1P决定的:

分享STM32定时器输出比较模式的理解

②假定OC1REF无效(OC1REF=0),那么从OC1REF到OC1的整条信号链上的信号都是无效信号,我们称OC1输出了无效信号。无效信号的高电平和低电平也是由CC1P决定:分享STM32定时器输出比较模式的理解

OC1REFCC1P功能OC1描述
00OC1高电平有效0(低电平)无效
1OC1低电平有效1(高电平)无效
10OC1高电平有效1(高电平)有效
1OC1低电平有效0(低电平)有效


显然,OC1REF决定了OC1输出电平是否有效,而CC1P决定了有效电平的极性。我们抽出上表的后四列

CC1P功能OC1描述
0OC1高电平有效0(低电平)无效
1OC1低电平有效1(高电平)无效
0OC1高电平有效1(高电平)有效
1OC1低电平有效0(低电平)有效


我们将表按1、2列合并:

CC1P功能OC1描述
0OC1高电平有效0(低电平)无效
OC1高电平有效1(高电平)有效
1OC1低电平有效0(低电平)有效
OC1低电平有效1(高电平)无效


现在很清楚了,从上表中可以清楚地看到CC1P对OC1有效极性的控制。即,OC1的极性只有与CC1P指定的有效极性一致,OC1才能是有效的(绿色部分)。这样就解释了“输出信号的极性体现在信号链的末端”这句话。然而这条链还未结束,还有个CC1E呢。当然,它就是一个OC1输出使能位而已。但细心的你可能会发现,参考手册上对CC1E位有这样的描述:

分享STM32定时器输出比较模式的理解

OCx = OCxREF + Polarity这个式子告诉我们OCx与OCxREF和Polarity(极性,即CCxP位)的关系。我们上面提到了它们的关系,是分了两种情况(CC1P=0和CC1P=1)表示的,这个式子帮我们将上面关系归纳成了一个。这个式子怎么得来的?回忆一下数字电路里面的半加器(就是不进位的加法),真值表如下:

OCxREFPolarityOCx
0(无效)0(高有效)0(无效)
0(无效)1(低有效)1(无效)
1(有效)0(高有效)1(有效)
1(有效)1(低有效)0(有效)


我们写逻辑函数(按黄色部分写):

注意:前面的“+”号表示半加运算(不进位加法),其实是逻辑上的“异或”。

OC1连接到TIMx_CH1上,而TIMx_CH1是复用的。可在参考手册上定时器功能复用部分找到。下面给出一些定时器功能复用的表格:

分享STM32定时器输出比较模式的理解

分享STM32定时器输出比较模式的理解

分享STM32定时器输出比较模式的理解

分享STM32定时器输出比较模式的理解

分享STM32定时器输出比较模式的理解


关键字:STM32  定时器输出  比较模式 引用地址:分享STM32定时器输出比较模式的理解

上一篇:在STM32单片机中使用SPI通信的方法
下一篇:STM32的ADC用法

推荐阅读最新更新时间:2024-11-12 07:19

ARM中断模式(IRQ)和快速中断模式(FIQ)区别比较
简介:本文主要对ARM中断模式(IRQ)和快速中断模式(FIQ)区别进行了说明,希望对你的学习有所帮助。 概念 IRQ(Interrupt Request):指中断模式。 FIQ(Fast Interrupt Request):指快速中断模式。 IRQ与FIQ是ARM处理器的两种不同编程模式(ARM有7种处理模式)。 详述 1、对FIQ你必须进快处理中断请求,并离开这个模式。 2、IRQ可以被FIQ所中断,但FIQ不能被IRQ所中断,在处理FIQ时必须要关闭中断。 3、FIQ的优先级比IRQ高。 4、FIQ模式下,比IRQ模式多了几个独立的寄存器。 不要小看这几个寄存器,ARM在编译的时候,
[单片机]
意法半导体发布支持STM32 微控制器的 USB Type-C® Power Delivery 软件
意法半导体发布支持STM32 微控制器的 USB Type-C® Power Delivery 软件,简化可持续产品设计 2022 年 12 月 22 日,中国——意法半导体最新的 X-CUBE-TCPP软件包增强了公司的 USB Type-C® 端口保护芯片产品组合和STM32 接口IP(知识产权),简化USB Power Delivery产品研发。 USB Power Delivery技术规范支持从传统的 5V/0.5A一直到最新版本 3.1 规范中的 48V/5A(240 瓦)的工作模式。功率增容可以激发产品设计创新,有助于新的可持续发展法律出台,例如,最近欧盟批准USB Type-C 成为所有手机、平板电脑和
[单片机]
意法半导体发布支持<font color='red'>STM32</font> 微控制器的 USB Type-C® Power Delivery 软件
STM32中断优先级理解及先占优先级和从优先级
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响 如上,NVIC_IRQChannelPreemptionPriority 和 NVIC_IRQChannelSubPriority
[单片机]
简述串口通信原理 stm32串口发送数据 如何通过串口发送数据
串口通信经常作为开发调试的工具,所以先介绍下串口通信。 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。目前STM32一般只使用 RXD、TXD 以及 GND 三条信号线,直接传输数据信号。 STM32的串口通信外设有USART和UART。USART是Universal Synchronous Asynchronous Receiver and Transmitter的缩写,即通用同步异步收发器可以灵活地与外部设备进行全双工数据交换。UART(Universal Asynchronous
[单片机]
简述串口通信原理 <font color='red'>stm32</font>串口发送数据 如何通过串口发送数据
STM32-外部中断实验
这一节,我们将向大家介绍如何使用STM32的外部输入中断。通过第1、2节的学习,我们掌握了STM32的IO口最基本的操作。这节我们将介绍作为外部中断输入口,STM32的需要做哪些设置。本节分为如下几个部分: 3.4.1 STM32外部中断简介 3.4.2 硬件设计 3.4.3 软件设计 3.4.4 下载与测试 3.4.1 STM32外部中断简介 STM32的IO口在本章第一节有详细介绍,而外部中断在第二章也有详细的阐述。这里我们将介绍如何将这两者结合起来,实现外部中断输入。 STM32的每个IO口都可以作为中断输入,这点很好用。要把IO口作为外部中断输入,有以下几个步骤: 1)初始化IO口为输入。 这一步设置你要作为外部中断输入
[单片机]
STM32 GPIO中GPIOMode_TypeDef枚举变量的解析
GPIOMode_TypeDef是一个枚举变量,它用于存储GPIO工作的模式,它的定义如下: typedef enum { GPIO_Mode_AIN = 0x0, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef; 设计这个枚举变量的可取值有一定的意义。在低四位当中只用到了其中的高两位,这两位
[单片机]
<font color='red'>STM32</font> GPIO中GPIOMode_TypeDef枚举变量的解析
基于STM32的六自由度机械臂控制与PID仿真
为实现六自由度机械臂的控制抓取并在此基础上提高抓取精确度,本文采用D-H法建立基于xArm1S智能总线机械臂的数学模型。并在Matlab2020a的RoboticsToolbox工具箱中编程实现给定机械臂末端始末位置条件下机械臂各连杆的运动仿真和角速度解算。最后以STM32单片机为核心控制模块,实现六自由度机械臂的各连杆运动控制,并在Simulink中搭建模块加入PID控制器对机械臂运动进行仿真。 六自由度机械臂具有效率高、灵活性强等优点,并可取代人类进行各类精密操作,有很强的实用价值和意义。本文选取图1中的xArm1S机械臂进行研究,为了提高精度,在使用前将机械臂固定在桌面。xArm1S机械臂在机械结构上包括六自由度机械臂
[单片机]
限量7折!米尔STM32MP135开发板
说到 MCU 就会想到 S MT32, 而 STM32MP1 作为新一代 MPU 的典范,有着极富开创意义的异构系统架构,兼容 MPU 和 MCU 的 双重优势,入门级、性价比高、能跑 L inux 系统、应用场景丰富 等 特点,深 受业界的喜爱! 米尔电子作为 ST 官方合作伙伴,先后开发了 S TM32MP151 、 S TM32MP157 、 STM32MP13 5 系列核心板和开发板,受到广大客户的认可。 米尔为了感谢广大客户的支持,推出 STM32MP1 35 开发板打折特惠活动! 米尔基于 STM32MP1 35 开发板 限 量 7 折! 7 折!
[嵌入式]
限量7折!米尔STM32MP135开发板
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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