STM32F10x - TIM - 图文 下载本文

函数原形 void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) 功能描述 在一个外部事件(ETRF高电平)时清除或保持OCREF1信号 输入参数1 TIMx:x 可以是1,2,3,4,5,8,来选择TIM外设 输入参数2 TIM_OCClear:输出比较清除使能位状态 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCClear:输出比较清除使能位的值列举如下表。 Table 520. TIM_OCClear值 TIM_OCClear 描述/CCMR1.bit7 #define值 TIM_OCClear_Enable TIMx输出比较清除使能 0x0080 TIM_OCClear_Disable TIMx输出比较清除失能 0x0000 例:

/* Enable the TIM2 Channel1 Ouput Compare Refence clear bit */ TIM_ClearOC1Ref(TIM2, TIM_OCClear_Enable); 函数原型如下:

void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) {

u16 tmpccmr1 = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));

tmpccmr1 = TIMx->CCMR1;

/* Reset the OC1CE Bit */

tmpccmr1 &= CCMR_OC13CE_Reset;//0xFF7F,CCMR1.bit7//=1(一旦检测到ETRF输入高电平,清除OCxREF=0)

/* Enable or Disable the Output Compare Clear Bit */ tmpccmr1 |= TIM_OCClear;

/* Write to TIMx CCMR1 register */ TIMx->CCMR1 = tmpccmr1; }

19.2.36 函数TIM_ClearOC2Ref

Table 521. 函数 TIM_ClearOC2Ref 函数名 TIM_ClearOC2Ref 函数原形 void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) 功能描述 在一个外部事件(ETRF高电平)时清除或保持OCREF2信号 输入参数 1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数 2 TIM_OCClear:输出比较清除使能位状态 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCClear:输出比较清除使能位的值列举如下表。 【TIM_ClearOC1Ref】 TIM_OCClear 描述/CCMR1.bit7 #define值 TIM_OCClear_Enable TIMx输出比较清除使能 0x0080 TIM_OCClear_Disable TIMx输出比较清除失能 0x0000 例: /* Enable the TIM2 Channel2 Ouput Compare Refence clear bit */ TIM_ClearOC2Ref(TIM2, TIM_OCClear_Enable); 函数原型如下:

void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) {

u16 tmpccmr1 = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));

tmpccmr1 = TIMx->CCMR1;

/* Reset the OC2CE Bit */

tmpccmr1 &= CCMR_OC24CE_Reset;//0x7FFF,CCMR1.bit15//=1(一旦检测到ETRF输入高电平,清除OCxREF=0)

/* Enable or Disable the Output Compare Clear Bit */

tmpccmr1 |= (u16)(TIM_OCClear << 8);// CCMR1.OC2CE比CCMR1.OC1CE高8位

/* Write to TIMx CCMR1 register */ TIMx->CCMR1 = tmpccmr1; }

19.2.37 函数TIM_ClearOC3Ref

Table 522. 函数TIM_ClearOC3Ref 函数名 TIM_ClearOC3Ref 函数原形 void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) 功能描述 在一个外部事件(ETRF高电平)时清除或者保持OCREF3信号 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_OCClear:输出比较清除使能位状态 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCClear:输出比较清除使能位的值列举如下表。 【TIM_ClearOC1Ref】 TIM_OCClear 描述/CCMR1.bit7 #define值 TIM_OCClear_Enable TIMx输出比较清除使能 0x0080 TIM_OCClear_Disable TIMx输出比较清除失能 0x0000 例: /* Enable the TIM2 Channel3 Ouput Compare Refence clear bit */ TIM_ClearOC3Ref(TIM2, TIM_OCClear_Enable); 函数原型如下:

void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) {

u16 tmpccmr2 = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));

tmpccmr2 = TIMx->CCMR2;

/* Reset the OC3CE Bit */

tmpccmr2 &= CCMR_OC13CE_Reset;//0xFF7F, CCMR1.bit7//=1(一旦检测到ETRF输入高电平,清除OCxREF=0)

/* Enable or Disable the Output Compare Clear Bit */ tmpccmr2 |= TIM_OCClear;

/* Write to TIMx CCMR2 register */ TIMx->CCMR2 = tmpccmr2; }

19.2.38 函数TIM_ClearOC4Ref

Table 523. 函数TIM_ClearOC4Ref 函数名 TIM_ClearOC4Ref 函数原形 void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) 功能描述 在一个外部事件(ETRF高电平)时清除或保持OCREF4信号 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_OCClear:输出比较清除使能位状态 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCClear:输出比较清除使能位的值列举如下表。 【TIM_ClearOC1Ref】

TIM_OCClear 描述/CCMR1.bit7 #define值 TIM_OCClear_Enable TIMx输出比较清除使能 0x0080 TIM_OCClear_Disable TIMx输出比较清除失能 0x0000 例:

/* Enable the TIM2 Channel4 Ouput Compare Refence clear bit */ TIM_ClearOC4Ref(TIM2, TIM_OCClear_Enable); 函数原型如下:

void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, u16 TIM_OCClear) {

u16 tmpccmr2 = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear));

tmpccmr2 = TIMx->CCMR2;

/* Reset the OC4CE Bit */

tmpccmr2 &= CCMR_OC24CE_Reset; //0x7FFF,CCMR2.bit15//=1(一旦检测到ETRF输入高电平,清除OCxREF=0)

/* Enable or Disable the Output Compare Clear Bit */

tmpccmr2 |= (u16)(TIM_OCClear << 8); // CCMR2.OC2CE比CCMR2.OC1CE高8位

/* Write to TIMx CCMR2 register */ TIMx->CCMR2 = tmpccmr2; }

19.2.39 函数TIM_UpdateDisableConfig

Table 524. 函数TIM_UpdateDisableConfig 函数名 TIM_UpdateDisableConfig void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, 函数原形 FunctionalState Newstate) 功能描述 使能或失能TIMx更新事件 输入参数 1 TIMx:x 可以是1,2,3,4,5,6,7,8来选择TIM外设 输入参数 2 NewState:TIMx_CR1寄存器UDIS位的新状态(ENABLE或DISABLE) 输出参数 无 返回值 无 先决条件 无 被调用函数 无 例: /* Enables the Update event for TIM2 */ TIM_UpdateDisableConfig(TIM2, DISABLE); 函数原型如下:

void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState) {

/* Check the parameters */

assert_param(IS_TIM_ALL_PERIPH(TIMx));

assert_param(IS_FUNCTIONAL_STATE(NewState));

if (NewState != DISABLE) {

/* Set the Update Disable Bit */

TIMx->CR1 |= CR1_UDIS_Set;// #define CR1_UDIS_Set ((u16)0x0002)//=1-禁止更新,0-允许更新 } else {

/* Reset the Update Disable Bit */

TIMx->CR1 &= CR1_UDIS_Reset;// #define CR1_UDIS_Reset ((u16)0x03FD)//bit15-10(6bit)保留 } }

19.2.40 函数TIM_EncoderInterfaceConfig

Table 525. 函数TIM_EncoderInterfaceConfig 函数名 TIM_EncoderInterfaceConfig void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, u8 TIM_EncoderMode, u8 TIM_IC1Polarity, u8 TIM_IC2Polarity) 功能描述 设置TIMx编码界面(只设置不开启) 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_EncoderMode:触发源(编码方式) 输入参数3 TIM_ IC1Polarity:TI1极性 输入参数4 TIM_ IC2Polarity:TI2极性 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_EncoderMode:选择TIMx编码模式。 Table 526. TIM_EncoderMode值 参数TIM_EncoderMode值 描述/SMCR.SMS[2:0] #define值 备注 TIM_EncoderMode_TI1 使用TIM编码模式1 0x0001 计数器根据TI1FP1电平在TI2FP2的边沿计数 TIM_EncoderMode_TI1 使用TIM编码模式2 0x0002 计数器根据TI2FP2电平在TI1FP1的边沿计数 函数原形 TIM_EncoderMode_TI12 使用TIM编码模式3 0x0003 边沿计数 TIM_ ICPolarity:输入捕获极性 参数TIM_ICxPolarity的值 表述/CCER.1/5/9/13 #define值 意义 TIM_ICPolarity_Rising 上升沿捕获(不反相) ((u16)0x0000) 输入捕获 TIM_ICPolarity_Falling 下降沿捕获(反相) ((u16)0x0002) 例: 计数器根据另一信号电平在TI1FP1和TI2FP2的/* Configures the encoder mode TI1 for TIM2 */

TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI1, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); 函数原型如下:

void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, u16 TIM_EncoderMode, u16 TIM_IC1Polarity,\\ u16 TIM_IC2Polarity) {

u16 tmpsmcr = 0; u16 tmpccmr1 = 0; u16 tmpccer = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_ENCODER_MODE(TIM_EncoderMode));//编码方式1,2,3

assert_param(IS_TIM_IC_POLARITY(TIM_IC1Polarity));//输入捕获方式:上升沿?下降沿? assert_param(IS_TIM_IC_POLARITY(TIM_IC2Polarity));

/* Get the TIMx SMCR, CCMR1, CCER register value */ tmpsmcr = TIMx->SMCR; tmpccmr1 = TIMx->CCMR1; tmpccer = TIMx->CCER;

/* Set the encoder Mode */

tmpsmcr &= SMCR_SMS_Mask;// #define SMCR_SMS_Mask ((u16)0xFFF8) tmpsmcr |= TIM_EncoderMode;//看上面【表526】

/* Select the Capture Compare 1 and the Capture Compare 2 as input */

tmpccmr1 &= CCMR_CC13S_Mask & CCMR_CC24S_Mask;// 0xFFFC 0xFCFF //CCyS-选择ICy的输入映射方式 tmpccmr1 |= CCMR_TI13Direct_Set | CCMR_TI24Direct_Set; // 0x0001 0x0100//设置为直通映射ICy=TIy

/* Set the TI1,TI2 Polarities */

tmpccer &= CCER_CC1P_Reset & CCER_CC2P_Reset;// 0xFFFD 0xFFDF