⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_tim.c

📁 stm32f10xx的中文译文例程
💻 C
📖 第 1 页 / 共 5 页
字号:
*           (2)TIM_OCInitStruct:指向一个包含特定TIMx外设的配置信息的TIM_OCInitTypeDef结构的指针
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
{
  u16 tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
   
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_123458_PERIPH(TIMx)); 
  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   

  /* Disable the Channel 2: Reset the CC2E Bit [禁止通道2:复位CC2E位]*/
  TIMx->CCER &= CCER_CC2E_Reset;
  
  /* Get the TIMx CCER register value [取得TIMx 捕获/比较使能寄存器的寄存器值]*/  
  tmpccer = TIMx->CCER;

  /* Get the TIMx CR2 register value [取得TIMx 控制2的寄存器值]*/
  tmpcr2 =  TIMx->CR2;
  
  /* Get the TIMx CCMR1 register value [取得TIMx 捕获/比较模式寄存器1的寄存器值]*/
  tmpccmrx = TIMx->CCMR1;
    
  /* Reset the Output Compare Mode Bits [复位输出比较模式位]*/
  tmpccmrx &= CCMR_OC24M_Mask;
  
  /* Select the Output Compare Mode [选择输出比较模式位]*/
  tmpccmrx |= (u16)(TIM_OCInitStruct->TIM_OCMode << 8);
  
  /* Reset the Output Polarity level [复位输出极性级别]*/
  tmpccer &= CCER_CC2P_Reset;

  /* Set the Output Compare Polarity [设置输出比较极性]*/
  tmpccer |= (u16)(TIM_OCInitStruct->TIM_OCPolarity << 4);
  
  /* Set the Output State [设置输出状态]*/
  tmpccer |= (u16)(TIM_OCInitStruct->TIM_OutputState << 4);
  
  /* Set the Capture Compare Register value [设置捕获比较寄存器值]*/
  TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse;
  
  if((*(u32*)&TIMx == TIM1_BASE) || (*(u32*)&TIMx == TIM8_BASE))
  {
    assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState));
    assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity));
    assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState));
    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));
    
    /* Reset the Output N Polarity level [复位输出N极性等级]*/
    tmpccer &= CCER_CC2NP_Reset;

    /* Set the Output N Polarity [设置输出N极性]*/
    tmpccer |= (u16)(TIM_OCInitStruct->TIM_OCNPolarity << 4);

    /* Reset the Output N State [复位输出N状态]*/
    tmpccer &= CCER_CC2NE_Reset;
    
    /* Set the Output N State [设置输出N状态]*/
    tmpccer |= (u16)(TIM_OCInitStruct->TIM_OutputNState << 4);

    /* Reset the Ouput Compare and Output Compare N IDLE State [复位输出比较和输出比较N IDLE状态]*/
    tmpcr2 &= CR2_OIS2_Reset;
    tmpcr2 &= CR2_OIS2N_Reset;

    /* Set the Output Idle state [设置输出IDLE状态]*/
    tmpcr2 |= (u16)(TIM_OCInitStruct->TIM_OCIdleState << 2);

    /* Set the Output N Idle state [设置输出N IDLE状态]*/
    tmpcr2 |= (u16)(TIM_OCInitStruct->TIM_OCNIdleState << 2);
  }

  /* Write to TIMx CR2 [写TIMx配置寄存器2]*/
  TIMx->CR2 = tmpcr2;
  
  /* Write to TIMx CCMR1 [写TIMx捕获/比较模式寄存器1]*/
  TIMx->CCMR1 = tmpccmrx;
  
  /* Write to TIMx CCER [写TIMx捕获/比较使能寄存器]*/
  TIMx->CCER = tmpccer;
}

/*******************************************************************************
* 函数名称: TIM_OC3Init
* 功能描述: 根据TIM_OCInitStruct中的特定参数初始化TIMx通道3。
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
*           (2)TIM_OCInitStruct:指向一个包含特定TIMx外设的配置信息的TIM_OCInitTypeDef结构的指针
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
{
  u16 tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
   
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_123458_PERIPH(TIMx)); 
  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   

  /* Disable the Channel 3: Reset the CC3E Bit [禁止通道3:复位CC3E位]*/
  TIMx->CCER &= CCER_CC3E_Reset;
  
  /* Get the TIMx CCER register value [取得TIMx 捕获/比较使能寄存器的寄存器值]*/
  tmpccer = TIMx->CCER;

  /* Get the TIMx CR2 register value [取得TIMx 控制2的寄存器值]*/
  tmpcr2 =  TIMx->CR2;
  
  /* Get the TIMx CCMR2 register value [取得TIMx 捕获/比较模式寄存器2的寄存器值]*/
  tmpccmrx = TIMx->CCMR2;
    
  /* Reset the Output Compare Mode Bits [复位输出比较模式位]*/
  tmpccmrx &= CCMR_OC13M_Mask;
  
  /* Select the Output Compare Mode [选择输出比较模式位]*/
  tmpccmrx |= TIM_OCInitStruct->TIM_OCMode;
  
  /* Reset the Output Polarity level [复位输出极性级别]*/
  tmpccer &= CCER_CC3P_Reset;

  /* Set the Output Compare Polarity [设置输出比较极性]*/
  tmpccer |= (u16)(TIM_OCInitStruct->TIM_OCPolarity << 8);
  
  /* Set the Output State [设置输出状态]*/
  tmpccer |= (u16)(TIM_OCInitStruct->TIM_OutputState << 8);
  
  /* Set the Capture Compare Register value [设置捕获比较寄存器值]*/
  TIMx->CCR3 = TIM_OCInitStruct->TIM_Pulse;
  
  if((*(u32*)&TIMx == TIM1_BASE) || (*(u32*)&TIMx == TIM8_BASE))
  {
    assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState));
    assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity));
    assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState));
    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));
    
    /* Reset the Output N Polarity level [复位输出N极性等级]*/
    tmpccer &= CCER_CC3NP_Reset;

    /* Set the Output N Polarity [设置输出N极性]*/
    tmpccer |= (u16)(TIM_OCInitStruct->TIM_OCNPolarity << 8);

    /* Reset the Output N State [复位输出N状态]*/
    tmpccer &= CCER_CC3NE_Reset;
    
    /* Set the Output N State [设置输出N状态]*/
    tmpccer |= (u16)(TIM_OCInitStruct->TIM_OutputNState << 8);

    /* Reset the Ouput Compare and Output Compare N IDLE State [复位输出比较和输出比较N IDLE状态]*/
    tmpcr2 &= CR2_OIS3_Reset;
    tmpcr2 &= CR2_OIS3N_Reset;

    /* Set the Output Idle state [设置输出IDLE状态]*/
    tmpcr2 |= (u16)(TIM_OCInitStruct->TIM_OCIdleState << 4);

    /* Set the Output N Idle state [设置输出N IDLE状态]*/
    tmpcr2 |= (u16)(TIM_OCInitStruct->TIM_OCNIdleState << 4);
  }

  /* Write to TIMx CR2 [写TIMx配置寄存器2]*/
  TIMx->CR2 = tmpcr2;
  
  /* Write to TIMx CCMR2 [写TIMx捕获/比较模式寄存器2]*/
  TIMx->CCMR2 = tmpccmrx;
  
  /* Write to TIMx CCER [写TIMx捕获/比较使能寄存器]*/
  TIMx->CCER = tmpccer;
}

/*******************************************************************************
* 函数名称: TIM_OC4Init
* 功能描述: 根据TIM_OCInitStruct中的特定参数初始化TIMx通道4。
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
*           (2)TIM_OCInitStruct:指向一个包含特定TIMx外设的配置信息的TIM_OCInitTypeDef结构的指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
{
  u16 tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0;
   
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_123458_PERIPH(TIMx)); 
  assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));
  assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState));
  assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));   

  /* Disable the Channel 2: Reset the CC4E Bit [禁止通道2:复位CC4E位]*/
  TIMx->CCER &= CCER_CC4E_Reset;
  
  /* Get the TIMx CCER register value [取得TIMx 捕获/比较使能寄存器的寄存器值]*/
  tmpccer = TIMx->CCER;

  /* Get the TIMx CR2 register value [取得TIMx 控制2的寄存器值]*/
  tmpcr2 =  TIMx->CR2;
  
  /* Get the TIMx CCMR2 register value [取得TIMx 捕获/比较模式寄存器2的寄存器值]*/
  tmpccmrx = TIMx->CCMR2;
    
  /* Reset the Output Compare Mode Bits [复位输出比较模式位]*/
  tmpccmrx &= CCMR_OC24M_Mask;
  
  /* Select the Output Compare Mode [选择输出比较模式位]*/
  tmpccmrx |= (u16)(TIM_OCInitStruct->TIM_OCMode << 8);
  
  /* Reset the Output Polarity level [复位输出极性级别]*/
  tmpccer &= CCER_CC4P_Reset;

  /* Set the Output Compare Polarity [设置输出比较极性]*/
  tmpccer |= (u16)(TIM_OCInitStruct->TIM_OCPolarity << 12);
  
  /* Set the Output State [设置输出状态]*/
  tmpccer |= (u16)(TIM_OCInitStruct->TIM_OutputState << 12);
  
  /* Set the Capture Compare Register value [设置捕获比较寄存器值]*/
  TIMx->CCR4 = TIM_OCInitStruct->TIM_Pulse;
  
  if((*(u32*)&TIMx == TIM1_BASE) || (*(u32*)&TIMx == TIM8_BASE))
  {
    assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState));

    /* Reset the Ouput Compare IDLE State [设置输出比较IDLE状态]*/
    tmpcr2 &= CR2_OIS4_Reset;

    /* Set the Output Idle state [设置输出IDLE状态]*/
    tmpcr2 |= (u16)(TIM_OCInitStruct->TIM_OCIdleState << 6);
  }

  /* Write to TIMx CR2 [写TIMx配置寄存器2]*/
  TIMx->CR2 = tmpcr2;
  
  /* Write to TIMx CCMR2 [写TIMx捕获/比较模式寄存器2]*/  
  TIMx->CCMR2 = tmpccmrx;
  
  /* Write to TIMx CCER [写TIMx捕获/比较使能寄存器]*/
  TIMx->CCER = tmpccer;
}

/*******************************************************************************
* 函数名称: TIM_ICInit
* 功能描述: 根据TIM_ ICInitStruct中的特定参数初始化TIMx.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
*           (2)TIM_OCInitStruct:指向一个包含特定TIMx外设的配置信息的TIM_OCInitTypeDef结构的指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_123458_PERIPH(TIMx));
  assert_param(IS_TIM_CHANNEL(TIM_ICInitStruct->TIM_Channel));
  assert_param(IS_TIM_IC_POLARITY(TIM_ICInitStruct->TIM_ICPolarity));
  assert_param(IS_TIM_IC_SELECTION(TIM_ICInitStruct->TIM_ICSelection));
  assert_param(IS_TIM_IC_PRESCALER(TIM_ICInitStruct->TIM_ICPrescaler));
  assert_param(IS_TIM_IC_FILTER(TIM_ICInitStruct->TIM_ICFilter));
  
  if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1)
  {
    /* TI1 Configuration [TI1配置]*/
    TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value [设置输入捕捉预分频器值]*/
    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_2)
  {
    /* TI2 Configuration [TI2配置]*/
    TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value [设置输入捕捉预分频器值]*/
    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3)
  {
    /* TI3 Configuration [TI2配置]*/
    TI3_Config(TIMx,  TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value [设置输入捕捉预分频器值]*/
    TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else
  {
    /* TI4 Configuration [TI2配置]*/
    TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);

    /* Set the Input Capture Prescaler value [设置输入捕捉预分频器值]*/
    TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
}

/*******************************************************************************
* 函数名称: TIM_PWMIConfig
* 功能描述: 依照TIM_ICInitStruct指定的参数设置TIM设备去测量外部的PWM信号。
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -