PWM模式
脉冲宽度调制模式可以生成一个信号,该信号频率由TIMx_ARR ⑩寄存器值决定,其占空比由TIMx_CCRx ⑤寄存器值决定。
通过向TIMx_CCMRx寄存器中的OCxM ⑰位写入110(PWM模式1)或111(PWM模式2),可以独立选择各通道(每个OCx ⑲输出对应一
个PWM)的PWM模式。必须通过将TIMx_CCMRx寄存器中的OCxPE ⑫位置1使能相应预装载寄存器,最后通过将TIMx_CR1寄存器中的
ARPE⑮位置1使能自动重载预装载寄存器(在递增计数或中心对齐模式下)。
由于只有在发生更新事件时预装载寄存器才会传送到影子寄存器,因此启动计数器之前,必须通过将TIMx_EGR寄存器中的UG ⑧位置1来初始
化所有寄存器。
OCx⑲极性可使用TIMx_CCER寄存器的CCxP ⑱位来编程。既可以设为高电平有效,也可以设为低电平有效。通过CCxE、CCxNE、MOE、OSSI和
OSSR位
(21)
(TIMx_CCER和TIMx_BDTR寄存器)的组合使能OCx ⑲输出。有关详细信息,请参见TIMx_CCER寄存器说明。
在PWM模式(1或2)下,TIMx_CNT ⑦总是与TIMx_CCRx ⑥进行比较,以确定是TIMx_CCRx ≤TIMx_CNT还是TIMx_CNT ≤TIMx_CCRx(取决于
计数器计数方向)。
根据TIMx_CR1寄存器中的CMS ②位状态,定时器能够产生边沿对齐模式或中心对齐模式的PWM信号。
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
PWM边沿对齐模式
●递增计数配置
当TIMx_CR1寄存器中的DIR ①位为低时执行递增计数。请参见第332页的递增计数模式一节。
以下以PWM模式1为例。只要 ⑦TIMx_CNT<TIMx_CCRx⑥,PWM参考信号OCxREF ⑯便为高电平,否则为低电平。如果TIMx_CCRx ⑥中的比
较值大于自动重载值(TIMx_ARR ⑨中),则OCxREF ⑯保持为“1”。如果比较值为0,则OCxRef保持为“0”。图103举例介绍边沿对齐
模式的一些PWM波形( ⑩TIMx_ARR=8)。
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
●递减计数配置
当TIMx_CR1寄存器中的DIR ①位为高时执行递减计数。请参见第335页的递减计数模式一节。在PWM模式1下,只要 ⑦TIMx_CNT>
TIMx_CCRx⑥,参考信号OCxRef ⑯即为低电平,否则其为高电平。如果TIMx_CCRx中的比较值大于TIMx_ARR ⑩中的自动重载值,则
OCxREF⑯保持为“1”。此模式下不可能产生0%的PWM波形。
PWM中心对齐模式
当TIMx_CR1寄存器中的CMS ②位不为“00”(其余所有配置对 ⑯OCxRef/OCx⑲信号具有相同的作用),中心对齐模式生效。根据CMS ②位的
配置,可以在计数器递增计数、递减计数或同时递增和递减计数时将比较标志置1。TIMx_CR1寄存器中的方向位(DIR) ①由硬件更新,
不得通过软件更改。请参见第337页的中心对齐模式(递增/递减计数)。
图104显示了中心对齐模式的PWM波形,在此例中:
●TIMx_ARR=8,⑩
●PWM模式为PWM模式1,
●在根据TIMx_CR1寄存器中CMS=01 ②而选择的中心对齐模式1下,当计数器递减计数时,比较标志置1。
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
中心对齐模式使用建议:
●启动中心对齐模式时将使用当前的递增/递减计数配置。这意味着计数器将根据写入TIMx_CR1寄存器中DIR ①位的值进行递增或递减计数。
此外,不得同时通过软件修改DIR ①和CMS②位。
●不建议在运行中心对齐模式时对计数器执行写操作,否则将发生意想不到的结果。尤其是:
‐如果写入计数器中的值大于自动重载值(TIMx_CNT>TIMx_ARR),计数方向不会更新。例如,如果计数器之前递增计数,则继续递增计数。
‐如果向计数器写入0或TIMx_ARR ⑩的值,计数方向会更新,但不生成更新事件UEV。
●使用中心对齐模式最为保险的方法是:在启动计数器前通过软件生成更新(将TIMx_EGR寄存器中的UG ⑧位置1),并且不要在计数器运行
过程中对其执行写操作。
CNTCOUNTER
计数器
CCR1
捕获/比较
影子寄存器
CCR1捕获/比较
预装载寄存器
MCU外设接口
APB外设总线
TIMx捕获/比较模式寄存器 1
TIMxcapture/comparemoderegister1
TIMx_CCMR1位[1:0]
此位域定义通道方向(输入/输出)以及所使用的输入。
00:CC1通道配置为输出
01:CC1通道配置为输入,IC1映射到 TI1上
10:CC1通道配置为输入,IC1映射到 TI2上
11:CC1通道配置为输入,IC1映射到 TRC上。此模式仅在通过 TS位(TIMx_SMCR寄存
器)选择内部触发输入时有效
注意: 仅当通道关闭时(TIMx_CCER中的 CC1E=“0”),才可向 CC1S位写入数据。
CC1S[1:0]=00
捕获/比较1选择
Capture/Compare1selection
CC1S[1]
CC1S[0]
TIMx捕获/比较模式寄存器 1
TIMxcapture/comparemoderegister1
TIMx_CCMR1位[3]
0:禁止与TIMx_CCR1相关的预装载寄存器。可随时向TIMx_CCR1写入数据,
写入后将立即使用新值。
1:使能与TIMx_CCR1相关的预装载寄存器。可读/写访问预装载寄存器。
TIMx_CCR1预装载值在每次生成更新事件时都会装载到活动寄存器中。
注意:
1:只要编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 3且CC1S=“00”
(通道配置为输出),这些位即无法修改。
2:只有单脉冲模式下才可在未验证预装载寄存器的情况下使用 PWM模式
(TIMx_CR1寄存器中的 OPM位置1)。其它情况下则无法保证该行为。
OC1PE=1
输出比较1预装载使能
OutputCompare1preloadenable
OC1PE
UEV
(自时基单元)
S
R
写入CCR1H
写入CCR1L
write_in_progress
输出模式
16bit
高8位
低8位
compare_transfer
16bit
16bit
8bit
8bit
CNT>CCR1
CNT=CCR1
比较器
CNT>CCR1
CNT=CCR1
输出模式
控制器
OC1_REF
死区
发生器
OC1_DT
OC1N_DT
X0
01
11
11
10
0X
0
1
0
1
输出
使能电路
输出
使能电路
OC1
OC1N
TIMx_CH1
TIMx_CH1N
TIMx捕获/比较模式寄存器 1
TIMxcapture/comparemoderegister1
TIMx_CCMR1位[7]
0:OC1Ref不受 ETRF输入影响
1:ETRF输入上检测到高电平时,OC1Ref立即清零。
OC1CE
输出比较1清零使能
OutputCompare1clearenable
TIMx捕获/比较模式寄存器 1
TIMxcapture/comparemoderegister1
TIMx_CCMR1位[6:4]
这些位定义提供 OC1和 OC1N的输出参考信号 OC1REF的行为。
OC1REF为高电平有效,而 OC1和 OC1N的有效电平则取决于 CC1P位和 CC1NP位。
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”)。
111:PWM模式 2在递增计数模式下,只要 TIMx_CNT<TIMx_CCR1,通道 1便为无效状态,否则为有效状态。
在递减计数模式下,只要 TIMx_CNT>TIMx_CCR1,通道 1便为有效状态,否则为无效状态。
注意:
1:只要编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 3且 CC1S=“00” (通道配置为输出),这
些位即无法修改。
2:在 PWM模式 1或 PWM模式 2下,仅当比较结果发生改变或输出比较模式由“冻结”模式切换到“
PWM”模式时,OCREF电平才会发生更改。
3:此位域将在具有互补输出的通道上进行预装载。如果 TIMx_CR2寄存器中 的 CCPC位置 1,则
仅当生成 COM事件时,OC1M有效位才会从预装载位获取新值。
OC1M[2:0]=110
输出比较1模式
OutputCompare1mode
TIMx断路和死区寄存器
TIMxbreakanddeadtimeregister
TIMx_BDTR位[7:0]
此位域定义插入到互补输出之间的死区持续时间。DT与该持续时间相对应。
DTG[7:5]=0xx=>DT=DTG[7:0]xtdtg,其中tdtg=tDTS。
DTG[7:5]=10x=>DT=(64+DTG[5:0])xtdtg,其中Tdtg=2xtDTS。
DTG[7:5]=110=>DT=(32+DTG[4:0])xtdtg,其中Tdtg=8xtDTS。
DTG[7:5]=111=>DT=(32+DTG[4:0])xtdtg,其中Tdtg=16xtDTS。
示例:如果TDTS=125ns(8MHz),则可能的死区值为:
0到15875ns(步长为125ns),
16us到31750ns(步长为250ns),
32us到63us(步长为1us),
64us到126us(步长为2us)
注意:只要编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 1、2或3,
此位域即无法修改。
DTG[7:0]
配置死区发生器
Dead‐timegeneratorsetup
"0"
"0"
到从模式控制器
TIMx捕获/比较使能寄存器
TIMxcapture/compareenableregister
TIMx_CCER位[0]
CC1通道配置为输出:
0:关闭‐‐OC1未激活。OC1电平是MOE、OSSI、OSSR、OIS1、OIS1N和
CC1NE位的函数。
1:开启‐‐OC1信号是相应输出引脚上的输出,具体取决于
MOE、OSSI、OSSR、OIS1、OIS1N和CC1NE位。
CC1通道配置为输入:此位决定了是否可以实际将计数器值捕获到输入捕
获/比较寄存器1(TIMx_CCR1)中。
0:禁止捕获。
1:使能捕获。
注意:此位将在具有互补输出的通道上进行预装载。如果TIMx_CR2寄存
器中的CCPC位置1,则仅当生成换向事件时,CC1E有效位才会从
预装载位获取新值。
CC1E=1
捕获/比较1输出使能
Capture/Compare1outputenable
TIMx捕获/比较使能寄存器
TIMxcapture/compareenableregister
TIMx_CCER位[2]
0:关闭‐‐OC1N未激活。OC1N电平是MOE、OSSI、OSSR、OIS1、OIS1N
和CC1E位的函数。
1:开启‐‐在相应输出引脚上输出OC1N信号,具体取决于
MOE、OSSI、OSSR、OIS1、OIS1N和CC1E位。
注意:此位将在具有互补输出的通道上进行预装载。如果TIMx_CR2寄存
器中的CCPC位置1,则仅当生成换向事件时,CC1NE有效位才会从
预装载位获取新值。
CC1NE=0
捕获/比较1互补输出使能
Capture/Compare1complementaryoutputenable
TIMx捕获/比较使能寄存器
TIMxcapture/compareenableregister
TIMx_CCER位[1]
CC1通道配置为输出:
0:OC1高电平有效
1:OC1低电平有效
注意:此位将在具有互补输出的通道上进行预装载。如果 TIMx_CR2寄存器中的CCPC位置 1,则
仅当生成换向事件时, CC1P有效位才会从预装载位获取新值。
注意:只要编程了 LOCK(TIMx_BDTR 寄存器中的LOCK位)级别 2或3,此位立即变为不可写状
态。
CC1通道配置为输入:
CC1NP/CC1P位可针对触发或捕获操作选择TI1FP1和TI2FP1的有效极性。
00:非反相/上升沿触发电路对TIxFP1上升沿敏感(在复位模式、外部时钟模式或触发模式下执
行捕获或触发操作),TIxFP1未反相(在门控模式或编码器模式下执行触发操作)。
01:反相/下降沿触发电路对TIxFP1下降沿敏感(在复位模式、外部时钟模式或触发模式下执行
捕获或触发操作),TIxFP1反相(在门控模式或编码器模式下执行触发操作)。
10:保留,不使用此配置。
11:未反相/边沿触发。电路对TIxFP1上升沿和下降沿都敏感(在复位模式、外部时钟模式或触
发模式下执行捕获或触发操作),TIxFP1未反相(在门控模式下执行触发操作)。编码器
模式下不得使用此配置。
CC1P=0
捕获/比较1输出极性
Capture/Compare1outputpolarity
TIMx_CCER位[3]
TIMxcapture/compareenableregister
TIMx捕获/比较使能寄存器
CC1通道配置为输出:
0:OC1N高电平有效。
1:OC1N低电平有效。
注意: 此位将在具有互补输出的通道上进行预装载。如果 TIMx_CR2寄存器中的 CCPC位置 1,则仅当生成换向事件
时,CC1NP有效位才会从预装载位获取新值。
注意: 只要编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 2或 3且 CC1S=“00” (通道配置为输出),
此位立即变为不可写状态。
CC1通道配置为输入:
此位与 CC1P配合使用,用以定义 TI1FP1和 TI2FP1的极性。请参见 CC1P说明。
CC1NP[0]=1
捕获/比较1互补输出极性
Capture/Compare1complementaryoutputpolarity
TIMx断路和死区寄存器
TIMxbreakanddeadtimeregister
TIMx_BDTR位[15]
只要断路输入变为有效状态,此位便由硬件异步清零。
此位由软件置1,也可根据AOE位状态自动置1。
此位仅对配置为输出的通道有效。
0:OC和OCN输出禁止或被强制为空闲状态。
1:如果OC和OCN输出的相应使能位(TIMx_CCER寄存器中的CCxE和CCxNE位)均置1,则使能OC
和OCN输出。
有关详细信息,请参见OC/OCN使能说明( 第379页的第 14.4.9节:TIM1和TIM8捕获/比较使能寄
存器(TIMx_CCER))。
MOE
主输出使能
Mainoutputenable
TIMx断路和死区寄存器
TIMxbreakanddeadtimeregister
TIMx_BDTR位[11]
此位在MOE=1时作用于配置为输出模式且具有互补输出的通道。
如果定时器中没有互补输出,则不存在OSSR。
有关详细信息,请参见OC/OCN使能说明( 第379页的第 14.4.9节:TIM1和TIM8 捕获/比较使能寄
存器(TIMx_CCER))。
0:处于无效状态时,禁止OC/OCN输出(OC/OCN使能输出信号=0)。
1:处于无效状态时,一旦CCxE=1或CCxNE=1,便使能OC/OCN输出并将其设为无效电平。然后设置
OC/OCN使能输出信号=1
注意:编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 2后,此位即无法修改。
OSSR
运行模式下的关闭状态选择
Off‐stateselectionforRunmode
TIMx断路和死区寄存器
TIMxbreakanddeadtimeregister
TIMx_BDTR位[10]
此位在MOE=0时作用于配置为输出的通道。
有关详细信息,请参见OC/OCN使能说明( 第379页的第 14.4.9节:TIM1和TIM8捕获/比较使能寄
存器(TIMx_CCER))。
0:处于无效状态时,禁止OC/OCN输出(OC/OCN使能输出信号=0)。
1:处于无效状态时,一旦CCxE=1或CCxNE=1,便将OC/OCN输出首先强制为其空闲电平。然后设置
OC/OCN使能输出信号=1
注意:编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 2后,此位即无法修改。
OSSI
空闲模式下的关闭状态选择
Off‐stateselectionforIdlemode
TIMx捕获/比较使能寄存器
TIMxcapture/compareenableregister
TIMx_CCER位[0]
CC1通道配置为输出:
0:关闭‐‐OC1未激活。OC1电平是MOE、OSSI、OSSR、OIS1、OIS1N和
CC1NE位的函数。
1:开启‐‐OC1信号是相应输出引脚上的输出,具体取决于
MOE、OSSI、OSSR、OIS1、OIS1N和CC1NE位。
CC1通道配置为输入:此位决定了是否可以实际将计数器值捕获到输入捕
获/比较寄存器1(TIMx_CCR1)中。
0:禁止捕获。
1:使能捕获。
注意:此位将在具有互补输出的通道上进行预装载。如果TIMx_CR2寄存
器中的CCPC位置1,则仅当生成换向事件时,CC1E有效位才会从
预装载位获取新值。
CC1E=0
捕获/比较1输出使能
Capture/Compare1outputenable
TIMx捕获/比较使能寄存器
TIMxcapture/compareenableregister
TIMx_CCER位[2]
0:关闭‐‐OC1N未激活。OC1N电平是MOE、OSSI、OSSR、OIS1、OIS1N
和CC1E位的函数。
1:开启‐‐在相应输出引脚上输出OC1N信号,具体取决于
MOE、OSSI、OSSR、OIS1、OIS1N和CC1E位。
注意:此位将在具有互补输出的通道上进行预装载。如果TIMx_CR2寄存
器中的CCPC位置1,则仅当生成换向事件时,CC1NE有效位才会从
预装载位获取新值。
CC1NE=0
捕获/比较1互补输出使能
Capture/Compare1complementaryoutputenable
Capture/Compare1value
捕获/比较1值
如果通道CC1配置为输出:
CCR1是捕获/比较寄存器1的预装载值。
如果没有通过TIMx_CCMR寄存器中的OC1PE位来使能预装载功
能,写入的数值会被直接传输至当前(影子)寄存器中。否则只在发
生更新事件时生效(拷贝到实际起作用的捕获/比较(影子)寄存
器)。
实际捕获/比较寄存器(影子寄存器)中包含有要与计数器
TIMx_CNT进行比较并在OC1输出上发出信号的值。
如果通道CC1配置为输入:
CCR1为上一个输入捕获1事件(IC1)发生时的计数器值。
16bit
Countervalue
计数器值16bit
ETR
ETR引脚
16bit
MCU向预装载寄存器写入数据时,先写入
高8位,同时置位"写入中"标志,避免预
装载寄存器向影子寄存器写入不完整的
数据.
然后写入低8位,同时复位"写入中"标
志.允许预装载寄存器向影子寄存器写
入数据.
16
19
20
14
17
18
U 事件
Auto‐reloadvalue
自动重载影子寄存器
TIMx_ARR
自动重载寄存器
ARR为要装载到实际自动重载寄存器的值。
有关 ARR更新和行为的详细信息,请参见第 331页
的第 14.3.1节:时基单元。
当自动重载值为空时,计数器不工作。
Auto‐reloadvalue
自动重载值ARR[15:0]
TIMx_ARR
自动重载寄存器
ARR为要装载到实际自动重载寄存器的值。
有关 ARR更新和行为的详细信息,请参见第 331页
的第 14.3.1节:时基单元。
当自动重载值为空时,计数器不工作。
ARPE=1
自动重载预装载使能
Auto‐reloadpreloadenable
0:TIMx_ARR寄存器不进行缓冲。
1:TIMx_ARR寄存器进行缓冲。
16bit
16bit
16bit
TIMx控制寄存器1
TIMxcontrolregister1
TIMx_CR1位[7]
0:关断
1:开启
0:关断
1:开启
3
CK_CNT
10
5
11
0:关断
1:开启
21
TIMx事件生成寄存器
TIMxeventgenerationregister
TIMx_EGR位[0]
该位可通过软件置 1,并由硬件自动清零。
0:不执行任何操作
1:重新初始化计数器并生成一个寄存器更新事件。
请注意,预分频器计数器也将清零(但预分频比不受影响)。
如果选择中心对齐模式或 DIR=0(递增计数),计数器将清零;
如果 DIR=1(递减计数),计数器将使用自动重载值 (TIMx_ARR)。
UG=1
更新生成
Updategeneration
U 事件
4
CMS[1:0]=00
中心对齐模式选择
Center‐alignedmodeselection
00:边沿对齐模式。计数器根据方向位 (DIR)递增计数或递减计数。
01:中心对齐模式 1。计数器交替进行递增计数和递减计数。仅当计数器递减
计数时,配置为输出的通道(TIMx_CCMRx寄存器中的 CCxS=00)的输
出比较中断标志才置 1。
10:中心对齐模式 2。计数器交替进行递增计数和递减计数。仅当计数器递增
计数时,配置为输出的通道(TIMx_CCMRx寄存器中的 CCxS=00)的输
出比较中断标志才置 1。
11:中心对齐模式 3。计数器交替进行递增计数和递减计数。当计数器递增计
数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的 CCxS=00)
的输出比较中断标志都会置 1。
注意: 只要计数器处于使能状态 (CEN=1),就不得从边沿对齐模式切换为中心
对齐模式。
TIMx控制寄存器1
TIMxcontrolregister1
TIMx_CR1位[6:5]
DIR=0
方向
Direction
0:计数器递增计数
1:计数器递减计数
TIMx控制寄存器1
TIMxcontrolregister1
TIMx_CR1位[4]
2
1
9
6
PSC
预分频器影子寄存器
CK_CNT= f
CK_PSC
/(PSC[15:0]+1)
prescaler
计数器值16bit
计数器时钟频率 (CK_CNT)等于 fCK_PSC/
(PSC[15:0]+1)。 PSC包含每次发生更新事件(包
括计数器通过 TIMx_EGR寄存器中的 UG位清零时,
或在 配置为“复位模式”时通过触发控制器清零时)
时要装载到活动预分频器寄存器的值。
PSC
预分频器寄存器
CK_CNT= f
CK_PSC
/(PSC[15:0]+1)
prescaler
计数器值16bit
计数器时钟频率 (CK_CNT)等于 fCK_PSC/
(PSC[15:0]+1)。 PSC包含每次发生更新事件(包
括计数器通过 TIMx_EGR寄存器中的 UG位清零时,
或在 配置为“复位模式”时通过触发控制器清零时)
时要装载到活动预分频器寄存器的值。
CK_PSC
U
事件
8
7
16bit
12
13
15
22
0
图103.边沿对齐模式的PWM波形(ARR=8)
计数器寄存器TIMx_CNT
捕获/比较寄存器
TIMx_CCR1=4
捕获/比较1中断标志CC1IF
1 2
3 4 5 6 7 8 0
1 2
3
CC1IF=1
捕获/比较1中断标志
Capture/Compare1interruptflag
TIMx状态寄存器
TIMxstatusregister
TIMx_SR位[1]
如果通道 CC1 配置为输出:
当计数器与比较值匹配时,此标志由硬件置 1,中心对齐模式下除
外(请参见 TIMx_CR1 寄存器中的 CMS 位说明)。但需要通过
软件清零。
0:不匹配。
1:TIMx_CNT 计数器的值与 TIMx_CCR1 寄存器的值匹配。当
TIMx_CCR1 的值大于TIMx_ARR 的值时,CC1IF 位将在计数器发
生上溢(递增计数模式和增减计数模式下)或下溢(递减计数
模式下)时变为高电平。
如果通道 CC1 配置为输入:
此位将在发生捕获事件时由硬件置 1。通过软件或读取 TIMx_CCR1
寄存器将该位清零。
0:未发生输入捕获事件
1:TIMx_CCR1 寄存器中已捕获到计数器值(IC1 上已检测到与所选
极性匹配的边沿)
OC1_REF
捕获/比较寄存器
TIMx_CCR1=8
捕获/比较1中断标志CC1IF
OC1_REF
捕获/比较寄存器
TIMx_CCR1>8
捕获/比较1中断标志CC1IF
OC1_REF
捕获/比较寄存器
TIMx_CCR1=0
捕获/比较1中断标志CC1IF
OC1_REF
"1"
"0"
0
图103.中心对齐模式的PWM波形(ARR=8)
计数器寄存器TIMx_CNT
捕获/比较寄存器
TIMx_CCR1=4
捕获/比较1中断标志CC1IF
1 2 3 4
5 6
7 8 7
6 5
4
CC1IF=1
捕获/比较1中断标志
Capture/Compare1interruptflag
TIMx状态寄存器
TIMxstatusregister
TIMx_SR位[1]
如果通道 CC1 配置为输出:
当计数器与比较值匹配时,此标志由硬件置 1,中心对齐模式下除
外(请参见 TIMx_CR1 寄存器中的 CMS 位说明)。但需要通过
软件清零。
0:不匹配。
1:TIMx_CNT 计数器的值与 TIMx_CCR1 寄存器的值匹配。当
TIMx_CCR1 的值大于TIMx_ARR 的值时,CC1IF 位将在计数器发
生上溢(递增计数模式和增减计数模式下)或下溢(递减计数
模式下)时变为高电平。
如果通道 CC1 配置为输入:
此位将在发生捕获事件时由硬件置 1。通过软件或读取 TIMx_CCR1
寄存器将该位清零。
0:未发生输入捕获事件
1:TIMx_CCR1 寄存器中已捕获到计数器值(IC1 上已检测到与所选
极性匹配的边沿)
OC1_REF
3 2 1 0 1 2
CMS[1:0]=01
中心对齐模式选择
Center‐alignedmodeselection
00:边沿对齐模式。计数器根据方向位 (DIR)递增计数或递减计数。
01:中心对齐模式 1。计数器交替进行递增计数和递减计数。仅当计数器递减
计数时,配置为输出的通道(TIMx_CCMRx寄存器中的 CCxS=00)的输
出比较中断标志才置 1。
10:中心对齐模式 2。计数器交替进行递增计数和递减计数。仅当计数器递增
计数时,配置为输出的通道(TIMx_CCMRx寄存器中的 CCxS=00)的输
出比较中断标志才置 1。
11:中心对齐模式 3。计数器交替进行递增计数和递减计数。当计数器递增计
数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的 CCxS=00)
的输出比较中断标志都会置 1。
注意: 只要计数器处于使能状态 (CEN=1),就不得从边沿对齐模式切换为中心
对齐模式。
TIMx控制寄存器1
TIMxcontrolregister1
TIMx_CR1位[6:5]
TIMx捕获/比较模式寄存器 1
TIMxcapture/comparemoderegister1
TIMx_CCMR1位[6:4]
这些位定义提供 OC1和 OC1N的输出参考信号 OC1REF的行为。
OC1REF为高电平有效,而 OC1和 OC1N的有效电平则取决于 CC1P位和 CC1NP位。
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”)。
111:PWM模式 2在递增计数模式下,只要 TIMx_CNT<TIMx_CCR1,通道 1便为无效状态,否则为有效状态。
在递减计数模式下,只要 TIMx_CNT>TIMx_CCR1,通道 1便为有效状态,否则为无效状态。
注意:
1:只要编程了 LOCK(TIMx_BDTR寄存器中的 LOCK位)级别 3且 CC1S=“00” (通道配置为输出),这
些位即无法修改。
2:在 PWM模式 1或 PWM模式 2下,仅当比较结果发生改变或输出比较模式由“冻结”模式切换到“
PWM”模式时,OCREF电平才会发生更改。
3:此位域将在具有互补输出的通道上进行预装载。如果 TIMx_CR2寄存器中 的 CCPC位置 1,则
仅当生成 COM事件时,OC1M有效位才会从预装载位获取新值。
OC1M[2:0]=110
输出比较1模式
OutputCompare1mode
CMS=01
CMS=10
CMS=11
在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为无效状态(OC1REF=“0”),否则为有效状态(OC1REF=“1”)。
在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态。
捕获/比较寄存器
TIMx_CCR1=7
捕获/比较1中断标志CC1IF
在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态。
OC1_REF
在递减计数模式下,只要
TIMx_CNT>TIMx_CCR1,通道1便为无效
状态(OC1REF=“0”),否则为有效状态
(OC1REF=“1”)。
CMS=01
CMS=10
CMS=11
捕获/比较寄存器
TIMx_CCR1=8
捕获/比较1中断标志CC1IF
OC1_REF
CMS=01
CMS=10
CMS=11
"1"
在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态。 在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为无效状态(OC1REF=“0”),否则为有效状态(OC1REF=“1”)。
01:中心对齐模式1。计数器交替进行递增计数和递减计数。仅当计数器递减计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
10:中心对齐模式2。计数器交替进行递增计数和递减计数。仅当计数器递增计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
11:中心对齐模式3。计数器交替进行递增计数和递减计数。当计数器递增计数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志都会置1。
捕获/比较寄存器
TIMx_CCR1>8
捕获/比较1中断标志CC1IF
OC1_REF
"1"
在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态。 在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为无效状态(OC1REF=“0”),否则为有效状态(OC1REF=“1”)。
01:中心对齐模式1。计数器交替进行递增计数和递减计数。仅当计数器递减计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
10:中心对齐模式2。计数器交替进行递增计数和递减计数。仅当计数器递增计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
11:中心对齐模式3。计数器交替进行递增计数和递减计数。当计数器递增计数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志都会置1。
CMS=01
CMS=10
CMS=11
捕获/比较寄存器
TIMx_CCR1=8
捕获/比较1中断标志CC1IF
OC1_REF
"0"
在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态。 在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为无效状态(OC1REF=“0”),否则为有效状态(OC1REF=“1”)。
01:中心对齐模式1。计数器交替进行递增计数和递减计数。仅当计数器递减计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
10:中心对齐模式2。计数器交替进行递增计数和递减计数。仅当计数器递增计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
11:中心对齐模式3。计数器交替进行递增计数和递减计数。当计数器递增计数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志都会置1。
CMS=01
CMS=10
CMS=11
01:中心对齐模式1。计数器交替进行递增计数和递减计数。仅当计数器递减计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
10:中心对齐模式2。计数器交替进行递增计数和递减计数。仅当计数器递增计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
11:中心对齐模式3。计数器交替进行递增计数和递减计数。当计数器递增计数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志都会置1。
01:中心对齐模式1。计数器交替进行递增计数和递减计数。仅当计数器递减计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
10:中心对齐模式2。计数器交替进行递增计数和递减计数。仅当计数器递增计数时,配置为输出的通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志才置1。
11:中心对齐模式3。计数器交替进行递增计数和递减计数。当计数器递增计数或递减计数时,配置为输出通道(TIMx_CCMRx寄存器中的CCxS=00)的输出比较中断标志都会置1。
待确认
待确认