STM32F10XX通用定时器应用指南

更新时间:2023-07-27 21:25:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

STM32F10XX通用定时器应用指南

湖北文理学院 阮海蓉

在STM32微处理器中,定时器是使用频率最高、用途最广、变化组合最灵活的部件,初学者往往不得要领。本文提纲携领,帮助初学者入门。介绍中以通用定时器为基本对象,高级定时器和基本定时器是在通用定时器的基础上增减了几种功能,在弄懂通用定时器以后就不难理解了。

固件库升级到STM32F10x_StdPeriph_Lib_V3.5.0后,定时器部分与使用手册UM0427有了较大改变,本文做了修订。

通用定时器(TIM2~5)

图1:通用定时器框图

图2:主从定时器实例

1. 每个通用定时器(TIM2~5)的主要组成部件:①一个16位的预分频器(图1中的PSC),对输入的

计数脉冲进行预分频;②一个16位的计数器(图1中的CNT),计数器可以按给定数值向上计数、向下计数、中央对齐(循环向上向下计数)方式工作;③一个主模式控制器(在图2中),用于输出信

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

2. 3.

4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

17.

18. 19. 20. 21. 22. 23. 24.

号(图1及图2中的TRGO)到另一个定时器(也可以是其他部件),供其作为时钟源或触发源使用;④一个从模式控制器(在图1和图2中),用于选择时钟源和触发源;⑤四个捕获/比较控制器(图1中),用于纪录某一输入事件发生时的计数器当前值或用于在计数器到达某一预定数值时使输出发生变化。

预分频器PSC在被使用时其值会自动加上1,即其值为0时不分频,为1时2分频……。 时钟源:①内部时钟(来自APB1),SMS[2:0]=000,ECE=0;②外部引脚ETR(外部时钟模式2,滤波分频后的指定边沿),ECE=1;③由从模式控制器提供的3种可±1的编码器模式(共3种);④由从模式控制器提供的TRGI源(即外部时钟模式1)。

使用内部时钟且分频系数不为1时,定时器时钟=(ABP1频率/ABP分频系数)×2。 TRGI源:①外部触发ETR(外部时钟模式1,滤波分频后的指定边沿);②TRC源(见图1);③TI1FP1(来自于输入TI1经滤波和边沿检测)④TI2FP2(来自于输入TI2经滤波和边沿检测)。 TRC源:①来自另一定时器主模式控制器的输出ITR0~ITR3(各定时器定义不同);②来自外部输入TI1(本定时器的CH1或者CH1、CH2和CH3的异或)的跳变边沿(上升沿+下降沿)TI1F_ED。 计数器影子寄存器:放置计数器向上计数时溢出值、向下计数时重装值的寄存器。 更新:重置预分频寄存器和计数器的影子寄存器。

复位:重置预分频寄存器和计数器影子寄存器,清除现存分频值,计数器从0或溢出值开始计数。复位会产生更新事件,更新事件并不会产生复位。 触发:计数器启动、停止、初始化。

更新事件可由计数器上溢/下溢、设置UG位和从模式控制器发出的复位产生,可以被UDIS=0关闭。 计数器可设定为发生更新时不停止和停止(单脉冲模式)。

写入自动重装载寄存器TIMx_ARR,可以选择立即更新到计数器影子寄存器(ARPE=0)或暂不更新(ARPE=1)。

写入预分频寄存器TIMx_PSC后,要在发生更新后才能装载到影子寄存器中。

设置UDIS=1可以禁止更新事件,但是设置UG位以及从模式控制器发出的复位可以使计数器和预分频器被重新初始化。

主模式控制器的输出可作为另一定时器的输入,主模式控制器可使用以下事件中的一个作为输出:①本定时器复位(设置UG或由TRGI引起);②本定时器使能(CEN=1或从模式控制器的触发);③本定时器更新;④捕获/比较通道1上一次成功的输入捕获/输出匹配(CC1IF);⑤指定通道1~通道4中的一个,其输出有效(OC1REF~OC4REF)。

从模式控制器可以将输入作为本定时器的时钟源或控制源,控制方式有:①关闭从模式,即TRGI无效;②编码器模式1,根据TI1FP1的电平,计数器在TI2FP2的边沿向上/向下计数;③编码器模式2,根据TI2FP2的电平,计数器在TI1FP1的边沿向上/向下计数;④编码器模式3,根据另一信号的电平,计数器在TI1FP1和TI2FP2的边沿向上/向下计数;⑤复位,在TRGI的上升沿重新初始化计数器并产生更新信号;⑥门控,TRGI高电平时计数,TRGI低电平时停止计数;⑦触发,TRGI高电平时开始计数(若已在计数中则无影响);⑧外部时钟模式1:以TRGI作为计数脉冲,在TRGI的上升沿计数。

以上从模式控制器的8种状态,①为无效,②③④⑧为提供时钟源,⑤⑥⑦为提供控制源。 输入捕获的触发源:①本通道的输入(TIx映射到通道x);②相邻通道的输入(通道1、2为一组通道3、4为另一组);③TRC源。

使用TRC作为触发源时,时钟源只能是内部时钟或外部时钟模式2的ETRF。

输入捕获工作方式:触发源有效时,将计数器CNT的值复制到本通道的捕获/比较寄存器,并产生CCxIF标志请求中断和DMA。

在输入捕获模式下将同一个输入以相反的有效沿作用到两个相邻通道(限通道1和通道2),并对计数器复位,可实现PWM输入模式,这种模式用于测量输入波形的占空比。

ETR、TI1~TI4均配有边沿检测器和数字滤波器,边沿检测器可以设置为上升沿/下降沿,数字滤波器可以频率fCK_INT或fDTS/n连续采样N次后判定其状态,fDTS可设为时钟fCK_INT或fCK_INT/2、fCK_INT/4。 外部触发ETR配有预分频器(1、2、4、8)。

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

25. TRGI上的事件对本定时器的作用可以选择被延迟,以使本定时器与主模式控制器驱动的从定时器完

美同步。

26. 输出比较工作方式:在该通道的捕获/比较寄存器中预存一个值,当计数器CNT的数值与捕获/比较寄

存器的值相符时,设置或改变匹配输出OCxREF的状态,并产生CCxIF标志请求中断和DMA。 27. 输出比较的工作模式:①冻结,不起作用;②匹配时输出有效(高)电平;③匹配时输出无效(低)

电平;④匹配时翻转输出电平;⑤强制输出无效(低)电平;⑥强制输出有效(高)电平;⑦PWM模式1,计数器<寄存器时输出有效(高)电平,反之输出无效(低)电平;⑧PWM模式2,计数器<寄存器时输出无效(低)电平,反之输出有效(高)电平。

28. 以上8种输出比较的工作模式中,用于匹配有效的有②③④⑦⑧,用于独立操控的有⑤⑥。

29. 输出比较的匹配输出可设置为受ETRF控制:①输出与ETRF无关;②输出被ETRF高电平清0。 30. 使用OCxPE可以设置在写入4个通道寄存器时:①禁止预装载,即写入值立即启用生效(OcxPE=0);

②开启预装载,即写入值在下一次更新事件到来时启用(OcxPE=1)。 31. 输出信号可被同极性或反极性传送至指定引脚CH1~CH4。

32. 输出比较在中央对齐模式下,通道的中断标志可选择:①仅向上计数时被设置;②仅向下计数时被设

置;③向上和向下计数时均设置。

33. 定时器的中断和DMA可由以下事件引起:①计数器被触发;②计数器上溢/下溢、设置UG位和从模

式控制器产生的更新,其中后2种可以被关闭;③通道1~通道4发生捕获/匹配。

34. 定时器共有6个事件:触发TRGI有效、更新和4个捕获/比较通道匹配。事件可作为DMA和中断的

源。事件可设置事件产生寄存器TIMx_EGR中各标志的方法模拟产生。

高级定时器(TIM1~8)

图3:高级定时器框图

1. TIM1和TIM8的内部时钟来自ABP2。

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

2. TIM8使用内部时钟且分频系数不为1时,定时器时钟=(ABP2频率/ABP分频系数),不再×2。

3. 高级定时器有重复次数计数器。启用重复次数计数器后,只有当溢出达到预定的重复次数后才会发生

更新。但软件以及从模式控制器产生的更新事件仍会立即更新。

4. 重复次数计数器RCR的值在被使用时会自动加1。其值为0时重复1次,为1时重复2次。 5. 输出增加CH1N、CH2N、CH3N作为CH1、CH2、CH3的互补输出。

6. CCxE=CCxNE=1时启用互补输出,此时OCx和OCxN的极性由CCxP和CCxNP决定。当CCxP和

CCxNP相同时,OCx和OCxN的有效电平是相反的,以保证推挽功率管不会同时导通。

7. 若启用了互补输出,则UTG对应设定一个死区时间。OCx和OCxN将延迟至死区时间后有效,以避

开推挽功率管的关断时间,确保2个推挽功率管关断在前,开通在后,不至发生短路环流。

8. COM:控制更新事件,若CCPC=1,则COM事件启动CCxE、CCNxE、OCxM更新。CCUS=0由写

入COMG产生,CCUS=1时由写入COMG位或TRGI产生。COM事件可以用来产生六步PWM输出。 9. 运行模式(MOE=1)。OSSR=1:若CcxE=CcxNE=1,OCx和OCxN对应输出PWM波形;若CcxE、

CcxNE中一个为1, CcxE、CcxNE中为1的OCx和OCxN输出PWM波形,为0的OCx=CCxP、OCxN=CCxNP;CcxE=CcxNE=0:则使OCx=CCxP、OCxN=CCxNP,同时OCx和OCxN与定时器断开。OSSR=0:若CcxE=CcxNE=1,OCx和OCxN对应输出PWM波形;若CCxE、CCxNE中一个为1,OCx和OCxN中CcxE、CcxNE为1的输出PWM波形,为0的OCx=0、OCxN=0,同时OCx和OCxN与定时器断开;CcxE=CcxNE=0:则OCx=0、OCxN=0,同时OCx和OCxN与定时器断开。 10. 由运行模式(MOE=1)变为空闲模式(MOE=0)。OSSI=1:输出OCx=CCxP、OCxN=CCxNP,经过

一个死区时间后,OCx=OISx,OCxN=OISxN。OSSI=0:输出OCx=CCxP、OCxN=CCxNP,经过一个死区时间后,OCx=OISx,OCxN=OISxN,同时OCx和OCxN与定时器断开。

基本定时器(TIM6~7)

1. 基本定时器只能使用内部时钟,只有更新事件。 2. 基本定时器只有向上计数方式。

3. 主模式控制器的输出可作为另一定时器的输入,主模式控制器可使用以下事件中的一个作为输出:①

本定时器复位(设置UG或由TRGI引起);②本定时器使能(CEN=1或从模式控制器的触发);③本定时器更新。

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM库函数

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

TIM_SelectInputTrig ger TIM_EncoderInterfa ceConfig TIM_ForcedOC1Con fig TIM_ForcedOC2Con fig TIM_ForcedOC3Con fig TIM_ForcedOC4Con fig TIM_ARRPreloadCo nfig TIM_SelectCOM TIM_SelectCCDMA

选择TIMx 输入触发源(ITR0~ITR3、TI1FED 、TI1FP1、TI2FP2、 1~5、8、9、 12、15 ETRF) 设置TIMx 从模式使用编码器功能1~5、8

置TIMx 输出1 为活动或者非活动电平(强制 OC1REF 为 0 或 1) 1~5、8~17 置TIMx 输出2 为活动或者非活动电平(强制 OC2REF 为 0 或 1)1~5、8、9、 12、15

置TIMx 输出3 为活动或者非活动电平(强制 OC3REF 为 0 或 1) 1~5、8 置TIMx 输出4 为活动或者非活动电平(强制 OC4REF 为 0 或 1) 1~5、8 使能或者失能 TIMx 在 ARR 上的预装载寄存器(等待更新/立即 1~17 生效 CR1_ARPE) 选择TIMx 外设的通讯事件 (设置 CR2_CCUS, 仅对互补通道有效) 选择TIMx 外设的捕获比较DMA 源(使能/失能 CR2_CCDS)1 、 8 、 15 ~ 17 1~5、8、 15~17 1~5、8、15

TIM_CCPreloadCont 设置 TIM x 的 CC x E、CC xNE、OC xM 预装载控制位(设置 rol TIM_OC1PreloadCo nfig TIM_OC2PreloadCo nfig TIM_OC3PreloadCo nfig TIM_OC4PreloadCo nfig

CR2_CCPC,仅对互补通道有效) 使能或者失能TIMx 在CCR1 上的预装载(设置 CCMR1_OC1PE) 使能或者失能TIMx 在CCR2 上的预装载(设置 CCMR1_OC2PE) 使能或者失能TIMx 在CCR3 上的预装载(设置 CCMR2_OC3PE) 使能或者失能TIMx 在CCR4 上的预装载(设置 CCMR2_OC4PE)

1~5、8~17 1~5、8、9、 12、15 1~5、8

1~5、8 1~5、8~17 1~5、8、9、

12、15 1~5、8 1~5、8

TIM_OC1FastConfig 设置TIMx 捕获比较1 快速特征(设置 CCMR1_OC1FE) TIM_OC2FastConfig 设置TIMx 捕获比较2 快速特征(设置 CCMR1_OC2FE) TIM_OC3FastConfig 设置TIMx 捕获比较3 快速特征(设置 CCMR2_OC3FE) TIM_OC4FastConfig 设置TIMx 捕获比较4 快速特征(设置 CCMR2_OC4FE) TIM_ClearOC1Ref TIM_ClearOC2Ref TIM_ClearOC3Ref TIM_ClearOC4Ref TIM_OC1PolarityCo nfig TIM_OC1NPolarity Config TIM_OC2PolarityCo

在 一 个 外 部 事 件 时 清 除 或 者 保 持 OCREF1 信 号 ( 设 置 1~5、8 CCMR1_OC1CE) 在 一 个 外 部 事 件 时 清 除 或 者 保 持 OCREF2 信 号 ( 设 置 1~5、8 CCMR1_OC2CE) 在 一 个 外 部 事 件 时 清 除 或 者 保 持 OCREF3 信 号 ( 设 置 1~5、8 CCMR2_OC3CE) 在 一 个 外 部 事 件 时 清 除 或 者 保 持 OCREF4 信 号 ( 设 置 1~5、8 CCMR2_OC4CE) 设置TIMx 通道1 极性(设置 CCER_CC1P) 设置TIMx 通道1N 极性(设置 CCER_CC1NP) 设置TIMx 通道2 极性(设置 CCER_CC2P)6 1~5、8~17 1 、 8 、 15 ~ 17 1~5、8、9、

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

nfig

12、15

53 54 55 56 57 58

TIM_OC2NPolarity Config TIM_OC3PolarityCo nfig TIM_OC3NPolarity Config TIM_OC4PolarityCo nfig TIM_CCxCmd TIM_CCxNCmd

设置TIMx 通道2N 极性(设置 CCER_CC2NP) 设置TIMx 通道3 极性(设置 CCER_CC3P) 设置TIMx 通道3N 极性(设置 CCER_CC3NP) 设置TIMx 通道4 极性(设置 CCER_CC4P)

1、81~5、8

1~5、8

1、8

1~5、8

使能或者失能TIMx 捕获比较通道x(设置通道 x 的 CCER_CCxE) 1~5、8~17 使 能 或 者 失 能 TIMx 捕 获 比 较 通 道 xN ( 设 置 通 道 x 的 1 、 8 、 15 ~ 17 CCER_CCxNE) 选择TIMx 输出比较模式(CCMR1/2_OcxM=000~111) 。本 函 数 在 改 变 输 出 比 较 模 式 前 失 能 选 中 的 通 道 。 用 户 必 须 使 用 函 数 1~5、8~17 TIM_CCxCmd 和TIM_CCxNCmd 来使能这个通道。 设置 TIMx 允许/禁止更新事件产生(设置 CR1_UDIS) 设置TIMx 的中断和 DMA 更新请求源模式(设置 CR1_URS) 使能或者失能TIMx 霍尔传感器接口(设置 CR2_TI1S) 设置TIMx 单脉冲模式(设置 CR1_OPM)1~17

59

TIM_SelectOCxM TIM_UpdateDisable Config TIM_UpdateRequest Config TIM_SelectHallSens or TIM_SelectOnePulse Mode TIM_SelectOutputTri gger TIM_SelectSlaveMo de TIM_SelectMasterSl aveMode TIM_SetCounter TIM_SetAutoreload TIM_SetCompare1 TIM_SetCompare2 TIM_SetCompare3 TIM_SetCompare4 TIM_SetIC1Prescale r TIM_SetIC2Prescale r TIM_SetIC3Prescale r TIM_SetIC4Prescale r TIM_SetClockDivisi

60 61 62 63

1~17

1~5、8

1~17

64

选择TIMx 主模式控制器输出模式(复位、使能、更新、捕获/比 1 ~ 9 、 12 、 较 1、比较 OC1REF 、比较 OC2REF 、比较 OC3REF 、比较 15 OC4REF) 选择 TIMx 从模式控制器功能(复位、更新、触发、外部时钟模 1~5、8、9、 12、15 式 1) 设置或者重置TIMx 主/从模式延迟(设置 S

MCR_MSM) 设置TIMx 计数器寄存器值(写 CNT) 设置TIMx 自动重装载寄存器值(写 ARR) 设置TIMx 捕获比较1 寄存器值(写 CCR1) 设置TIMx 捕获比较2 寄存器值(写 CCR2) 设置TIMx 捕获比较3 寄存器值(写 CCR3) 设置TIMx 捕获比较4 寄存器值(写 CCR4) 设置TIMx 输入捕获1 预分频(写 CCMR1_IC1PSC) 设置TIMx 输入捕获2 预分频(写 CCMR1_IC2PSC) 设置TIMx 输入捕获3 预分频(写 CCMR2_IC3PSC) 设置TIMx 输入捕获4 预分频(写 CCMR2_IC4PSC) 设置TIMx 的时钟分割值(写 CR1_CKD)7 1~5、8、9、 12、15 1~17 1~17 1~5、8~17 1~5、8、9、 12、15 1~5、8 1~5、8 1~5、8~17 1~5、8、9、 12、15 1~5、8

65 66 67 68 69 70 71 72 73 74 75 76 77

1~5、8 1~5、8~17

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

on

78 79 80 81 82 83 84 85 86 87

TIM_GetCapture1 TIM_GetCapture2 TIM_GetCapture3 TIM_GetCapture4 TIM_GetCounter TIM_GetPrescaler TIM_GetFlagStatus TIM_ClearFlag TIM_GetITStatus TIM_ClearITPending Bit

获得TIMx 输入捕获1 的值(读 CCR1) 获得TIMx 输入捕获2 的值(读 CCR2) 获得TIMx 输入捕获3 的值(读 CCR3) 获得TIMx 输入捕获4 的值(读 CCR4) 获得TIMx 计数器的值(读 CNT) 获得TIMx 预分频值(读 PSC) 检查指定的TIM 标志位设置与否(读指定标志) 清除TIMx 的待处理标志位(清除指定标志) 检查指定的TIM 中断发生与否(读指定中断标志) 清除TIMx 的中断待处理位(清除指定中断标志)

1~5、8~17 1~5、8、9、 12、15 1~5、8 1~5、8 1~17 1~17 1~17 1~17 1~17 1~17

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

1 函数TIM_DeInit

例:

/* Resets the TIM2 */ TIM_DeInit(TIM2);

2 函数TIM_TimeBaseInit

TIM_TimeBaseInitTypeDef structure

TIM_TimeBaseInitTypeDef 定义于文件“stm32f10x_TIM.h”:

typedef struct {

u16 TIM_Period; u16 TIM_Prescaler; u8 TIM_ClockDivision; u16 TIM_CounterMode; u8 TIM_RepetitionCounter;

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

} TIM_TIMBaseInitTypeDef;

TIM_Period

TIM_Period 设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在 0x0000 和0xFFFF 之间。

TIM_Prescaler

TIM_Prescaler 设置了用来作为 TIM 时钟频率除数的预分频值。它的取值必须在 0x0000 和 0xFFFF 之间。

TIM_ClockDivision

TIM_CounterMode

TIM_RepetitionCounter

TIM_RepetitionCounter设置了周期计数器值。RCR向下计数器每次计数至0,会产生一个更新事件且计数器重新由RCR值(N)开始计数。 这意味着在PWM模式(N+1)对应着: . 边沿对齐模式下PWM周期数 . 中央对齐模式下PWM半周期数 它的取值必须在0x00和0xFF之间。

3 函数TIM_OC1Init

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM_OCInitTypeDef structure

TIM_OCInitTypeDef 定义于文件“stm32f10x_TIM.h”: typedef struct {

u16 TIM_OCMode;

u16 TIM_OutputState; u16 TIM_OutputNState; u16 TIM_Pulse;

u16 TIM_OCPolarity; u16 TIM_OCNPolarity; u16 TIM_OCIdleState; u16 TIM_OCNIdleState; } TIM_OCInitTypeDef;

TIM_OCMode

TIM_OutputState

TIM_OutputNState

TIM_Pulse

TIM_Pulse 设置了待装入捕获比较寄存器的脉冲值。它的取值必须在 0x0000 和 0xFFFF 之间。

TIM_OCPolarity

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM_OCNPolarity

TIM_OCIdleState

TIM_OCNIdleState

例:

/* Configures the TIM Channel1 in PWM Mode */ TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM_OC1Init(TIM1,&TIM_OCInitStructure);

4 函数TIM_OC2Init

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

例:

/* Configures the TIM Channel2 in PWM Mode */ TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM_OC2Init(TIM1,&TIM_OCInitStructure);

5 函数TIM_OC3Init

例:

/* Configures the TIM Channel3 in PWM Mode */ TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM_OC3Init(TIM1,&TIM_OCInitStructure);

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

6 函数TIM_OC4Init

例:

/* Configures the TIM Channel4 in PWM Mode */ TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x7FF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OC4Init(TIM1,&TIM_OCInitStructure);

7 函数TIM_ICInit

函数

TIM_ICInit

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM_ICInitTypeDef structure

TIM_ICInitTypeDef 定义于文件“stm32f10x_TIM.h”: typedef struct {

u16 TIM_Channel; u16 TIM_ICPolarity; u16 TIM_ICSelection; u16 TIM_ICPrescaler; u16 TIM_ICFilter; } TIM_ICInitTypeDef;

TIM_Channel

TIM_ICPolarity

TIM_ICPolarity输入活动沿。该参数取值见下表。

TIM_ICSelection

TIM_ICPrescaler

TIM_ICFilter

TIM_ICFilter选择输入比较滤波器。该参数取值在0x0和0xF之间。

例:

/* TIM Input Capture Channel 1 mode Configuration */ TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV2; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(&TIM_ICInitStructure);

8 函数TIM_PWMIConfig

例:

/* TIM PWM Input Channel 1 mode Configuration */ TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_PWMIConfig(TIM1,&TIM_ICInitStructure);

9 函数TIM_BDTRConfig

函数 TIM_BDTRConfig

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM_BDTRInitStruct structure

TIM_BDTRInitStruct structure 定义于文件“stm32f10x_TIM.h”:

typedef struct {

u16 TIM_OSSRState; u16 TIM_OSSIState; u16 TIM_LOCKLevel; u16 TIM_DeadTIM; u16 TIM_Break;

u16 TIM_BreakPolarity; u16 TIM_AutomaticOutput; } TIM_BDTRInitTypeDef;

TIM_OSSRState

TIM_OSSIState

TIM_LOCKLevel

TIM_DeadTIM

TIM_DeadTIM 指定了输出打开和关闭状态之间的延时(UTG=0x0~0xf)。

TIM_Break

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

TIM_BreakPolarity

TIM_AutomaticOutput

例:

/* OSSR, OSSI, Automatic Output enable, Break, dead TIM and Lock Level configuration*/ TIM_BDTR

InitTypeDef TIM_BDTRInitStructure;

TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1; TIM_BDTRInitStructure.TIM_DeadTIM = 0x05;

TIM_BDTRInitStructure.TIM_Break = TIM_Break_Enable;

TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;

TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable; TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);

10 函数TIM_TimeBaseStructInit

新颖的归类总结,引领进入定时器认识;独有的STM32F10XX固件库V3.5.0的中文手册,指导定时器应用。

例:

/* The following example illustrates how to initialize a TIM_BaseInitTypeDef structure */

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseStructInit(& TIM_TimeBaseInitStructure);

11 函数TIM_OCStructInit

函数 TIM_TimeBaseStructInit

例:

/* The following example illustrates how to initialize a TIM_OCInitTypeDef structure */

TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCStructInit(& TIM_OCInitStructure);

12 函数TIM_ICStructInit

函数 TIM_ICStructInit

本文来源:https://www.bwwdw.com/article/krjm.html

Top