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

📄 stm8s_tim1.c

📁 STM8s
💻 C
📖 第 1 页 / 共 5 页
字号:
    TIM1->SMCR |= (u8)(TIM1_SLAVEMODE_EXTERNAL1);
}

/**
  * @brief Selects the TIM1 Input Trigger source.
  * @param[in] TIM1_InputTriggerSource specifies Input Trigger source.
  * This parameter can be one of the following values:
  *                       - TIM1_TS_TI1F_ED: TI1 Edge Detector
  *                       - TIM1_TS_TI1FP1: Filtered Timer Input 1
  *                       - TIM1_TS_TI2FP2: Filtered Timer Input 2
  *                       - TIM1_TS_ETRF: External Trigger input
  * @retval None
  */
void TIM1_SelectInputTrigger(TIM1_TS_TypeDef TIM1_InputTriggerSource)
{
    /* Check the parameters */
    assert_param(IS_TIM1_TRIGGER_SELECTION_OK(TIM1_InputTriggerSource));

    /* Select the Tgigger Source */
    TIM1->SMCR = (u8)((TIM1->SMCR & (u8)(~TIM1_SMCR_TS)) | (u8)TIM1_InputTriggerSource);
}


/**
  * @brief Enables or Disables the TIM1 Update event.
  * @param[in] NewState new state of the TIM1 peripheral Preload register. This parameter can
  * be ENABLE or DISABLE.
  * @retval None
  */

void TIM1_UpdateDisableConfig(FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_FUNCTIONALSTATE_OK(NewState));

    /* Set or Reset the UDIS Bit */
    if (NewState != DISABLE)
    {
        TIM1->CR1 |= TIM1_CR1_UDIS;
    }
    else
    {
        TIM1->CR1 &= (u8)(~TIM1_CR1_UDIS);
    }
}

/**
  * @brief Selects the TIM1 Update Request Interrupt source.
  * @param[in] TIM1_UpdateSource specifies the Update source.
  * This parameter can be one of the following values
  *                       - TIM1_UPDATESOURCE_REGULAR
  *                       - TIM1_UPDATESOURCE_GLOBAL
  * @retval None
  */
void TIM1_UpdateRequestConfig(TIM1_UpdateSource_TypeDef TIM1_UpdateSource)
{
    /* Check the parameters */
    assert_param(IS_TIM1_UPDATE_SOURCE_OK(TIM1_UpdateSource));

    /* Set or Reset the URS Bit */
    if (TIM1_UpdateSource != TIM1_UPDATESOURCE_GLOBAL)
    {
        TIM1->CR1 |= TIM1_CR1_URS;
    }
    else
    {
        TIM1->CR1 &= (u8)(~TIM1_CR1_URS);
    }
}


/**
  * @brief Enables or Disables the TIM1抯 Hall sensor interface.
  * @param[in] NewState new state of the TIM1 Hall sensor interface.This parameter can
  * be ENABLE or DISABLE.
  * @retval None
  */
void TIM1_SelectHallSensor(FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_FUNCTIONALSTATE_OK(NewState));

    /* Set or Reset the TI1S Bit */
    if (NewState != DISABLE)
    {
        TIM1->CR2 |= TIM1_CR2_TI1S;
    }
    else
    {
        TIM1->CR2 &= (u8)(~TIM1_CR2_TI1S);
    }
}


/**
  * @brief Selects the TIM1抯 One Pulse Mode.
  * @param[in] TIM1_OPMode specifies the OPM Mode to be used.
  * This parameter can be one of the following values
  *                    - TIM1_OPMODE_SINGLE
  *                    - TIM1_OPMODE_REPETITIVE
  * @retval None
  */
void TIM1_SelectOnePulseMode(TIM1_OPMode_TypeDef TIM1_OPMode)
{
    /* Check the parameters */
    assert_param(IS_TIM1_OPM_MODE_OK(TIM1_OPMode));

    /* Set or Reset the OPM Bit */
    if (TIM1_OPMode != TIM1_OPMODE_REPETITIVE)
    {
        TIM1->CR1 |= TIM1_CR1_OPM;
    }
    else
    {
        TIM1->CR1 &= (u8)(~TIM1_CR1_OPM);
    }

}


/**
  * @brief Selects the TIM1 Trigger Output Mode.
  * @param[in] TIM1_TRGOSource specifies the Trigger Output source.
  * This parameter can be one of the following values
  *                       - TIM1_TRGOSOURCE_RESET
  *                       - TIM1_TRGOSOURCE_ENABLE
  *                       - TIM1_TRGOSOURCE_UPDATE
  *                       - TIM1_TRGOSource_OC1
  *                       - TIM1_TRGOSOURCE_OC1REF
  *                       - TIM1_TRGOSOURCE_OC2REF
  *                       - TIM1_TRGOSOURCE_OC3REF
  * @retval None
  */
void TIM1_SelectOutputTrigger(TIM1_TRGOSource_TypeDef TIM1_TRGOSource)
{

    /* Check the parameters */
    assert_param(IS_TIM1_TRGO_SOURCE_OK(TIM1_TRGOSource));
    /* Reset the MMS Bits & Select the TRGO source */
    TIM1->CR2 = (u8)((TIM1->CR2 & (u8)(~TIM1_CR2_MMS    )) | (u8)  TIM1_TRGOSource);
}

/**
  * @brief Selects the TIM1 Slave Mode.
  * @param[in] TIM1_SlaveMode specifies the TIM1 Slave Mode.
  * This parameter can be one of the following values
  *                       - TIM1_SLAVEMODE_RESET
  *                       - TIM1_SLAVEMODE_GATED
  *                       - TIM1_SLAVEMODE_TRIGGER
  *                       - TIM1_SLAVEMODE_EXTERNAL1
  * @retval None
  */
void TIM1_SelectSlaveMode(TIM1_SlaveMode_TypeDef TIM1_SlaveMode)
{

    /* Check the parameters */
    assert_param(IS_TIM1_SLAVE_MODE_OK(TIM1_SlaveMode));

    /* Reset the SMS Bits */ /* Select the Slave Mode */
    TIM1->SMCR = (u8)((TIM1->SMCR &  (u8)(~TIM1_SMCR_SMS)) |  (u8)TIM1_SlaveMode);

}

/**
  * @brief Sets or Resets the TIM1 Master/Slave Mode.
  * @param[in] NewState new state of the synchronization between TIM1 and its slaves
  *  (through TRGO). This parameter can be ENABLE or DISABLE.
  * @retval None
  */
void TIM1_SelectMasterSlaveMode(FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_FUNCTIONALSTATE_OK(NewState));

    /* Set or Reset the MSM Bit */
    if (NewState != DISABLE)
    {
        TIM1->SMCR |= TIM1_SMCR_MSM;
    }
    else
    {
        TIM1->SMCR &= (u8)(~TIM1_SMCR_MSM);
    }
}

/**
  * @brief Configures the TIM1 Encoder Interface.
  * @param[in] TIM1_EncoderMode specifies the TIM1 Encoder Mode.
  * This parameter can be one of the following values
  * - TIM1_ENCODERMODE_TI1: Counter counts on TI1FP1 edge
	* depending on TI2FP2 level.
  * - TIM1_ENCODERMODE_TI2: Counter counts on TI2FP2 edge
  *	depending on TI1FP1 level.
  * - TIM1_ENCODERMODE_TI12: Counter counts on both TI1FP1 and
  * TI2FP2 edges depending on the level of the other input.
  * @param[in] TIM1_IC1Polarity specifies the IC1 Polarity.
  * This parameter can be one of the following values
  *                       - TIM1_ICPOLARITY_FALLING
  *                       - TIM1_ICPOLARITY_RISING
  * @param[in] TIM1_IC2Polarity specifies the IC2 Polarity.
  * This parameter can be one of the following values
  *                       - TIM1_ICPOLARITY_FALLING
  *                       - TIM1_ICPOLARITY_RISING
  * @retval None
  */
void TIM1_EncoderInterfaceConfig(TIM1_EncoderMode_TypeDef TIM1_EncoderMode,
                                 TIM1_ICPolarity_TypeDef TIM1_IC1Polarity,
                                 TIM1_ICPolarity_TypeDef TIM1_IC2Polarity)
{


    /* Check the parameters */
    assert_param(IS_TIM1_ENCODER_MODE_OK(TIM1_EncoderMode));
    assert_param(IS_TIM1_IC_POLARITY_OK(TIM1_IC1Polarity));
    assert_param(IS_TIM1_IC_POLARITY_OK(TIM1_IC2Polarity));

    /* Set the TI1 and the TI2 Polarities */
    if (TIM1_IC1Polarity != TIM1_ICPOLARITY_RISING)
    {
        TIM1->CCER1 |= TIM1_CCER1_CC1P;
    }
    else
    {
        TIM1->CCER1 &= (u8)(~TIM1_CCER1_CC1P);
    }

    if (TIM1_IC2Polarity != TIM1_ICPOLARITY_RISING)
    {
        TIM1->CCER1 |= TIM1_CCER1_CC2P;
    }
    else
    {
        TIM1->CCER1 &= (u8)(~TIM1_CCER1_CC2P);
    }
    /* Set the encoder Mode */
    TIM1->SMCR = (u8)((TIM1->SMCR & (u8)(TIM1_SMCR_MSM | TIM1_SMCR_TS)) | (u8) TIM1_EncoderMode);

    /* Select the Capture Compare 1 and the Capture Compare 2 as input */
    TIM1->CCMR1 = (u8)((TIM1->CCMR1 & (u8)(~TIM1_CCMR_CCxS))  | (u8) CCMR_TIxDirect_Set);
    TIM1->CCMR2 = (u8)((TIM1->CCMR2 & (u8)(~TIM1_CCMR_CCxS)) | (u8) CCMR_TIxDirect_Set);

}

/**
  * @brief Configures the TIM1 Prescaler.
  * @param[in] Prescaler specifies the Prescaler Register value
  * This parameter must be a value between 0x0000 and 0xFFFF
  * @param[in] TIM1_PSCReloadMode specifies the TIM1 Prescaler Reload mode.
  * This parameter can be one of the following values
  * - TIM1_PSCRELOADMODE_IMMEDIATE: The Prescaler is loaded immediately.
  * - TIM1_PSCRELOADMODE_UPDATE: The Prescaler is loaded at the update event.
  * @retval None
  */

void TIM1_PrescalerConfig(u16 Prescaler,
                          TIM1_PSCReloadMode_TypeDef TIM1_PSCReloadMode)
{
    /* Check the parameters */
    assert_param(IS_TIM1_PRESCALER_RELOAD_OK(TIM1_PSCReloadMode));

    /* Set the Prescaler value */
    TIM1->PSCRH = (u8)(Prescaler >> 8);
    TIM1->PSCRL = (u8)(Prescaler);

    /* Set or reset the UG Bit */
    TIM1->EGR = (u8)TIM1_PSCReloadMode;

}

/**
  * @brief Specifies the TIM1 Counter Mode to be used.
  * @param[in] TIM1_CounterMode specifies the Counter Mode to be used
  * This parameter can be one of the following values:
  * - TIM1_COUNTERMODE_UP: TIM1 Up Counting Mode
  * - TIM1_COUNTERMODE_DOWN: TIM1 Down Counting Mode
  * - TIM1_COUNTERMODE_CENTERALIGNED1: TIM1 Center Aligned Mode1
  * - TIM1_CounterMode_CenterAligned2: TIM1 Center Aligned Mode2
  * - TIM1_COUNTERMODE_CENTERALIGNED3: TIM1 Center Aligned Mode3
  * @retval None
  */
void TIM1_CounterModeConfig(TIM1_CounterMode_TypeDef TIM1_CounterMode)
{
    /* Check the parameters */
    assert_param(IS_TIM1_COUNTER_MODE_OK(TIM1_CounterMode));


    /* Reset the CMS and DIR Bits & Set the Counter Mode */
    TIM1->CR1 = (u8)((TIM1->CR1 & (u8)((u8)(~TIM1_CR1_CMS) & (u8)(~TIM1_CR1_DIR))) | (u8)TIM1_CounterMode);
}


/**
  * @brief Forces the TIM1 Channel1 output waveform to active or inactive level.
  * @param[in] TIM1_ForcedAction specifies the forced Action to be set to the output waveform.
  * This parameter can be one of the following values:
  * - TIM1_FORCEDACTION_ACTIVE: Force active level on OC1REF
  * - TIM1_FORCEDACTION_INACTIVE: Force inactive level on OC1REF.
  * @retval None
  */
void TIM1_ForcedOC1Config(TIM1_ForcedAction_TypeDef TIM1_ForcedAction)
{
    /* Check the parameters */
    assert_param(IS_TIM1_FORCED_ACTION_OK(TIM1_ForcedAction));

    /* Reset the OCM Bits & Configure the Forced output Mode */
    TIM1->CCMR1 =  (u8)((TIM1->CCMR1 & (u8)(~TIM1_CCMR_OCM))  | (u8)TIM1_ForcedAction);
}


/**
  * @brief Forces the TIM1 Channel2 output waveform to active or inactive level.
  * @param[in] TIM1_ForcedAction specifies the forced Action to be set to the output waveform.
  * This parameter can be one of the following values:
  * - TIM1_FORCEDACTION_ACTIVE: Force active level on OC2REF
  * - TIM1_FORCEDACTION_INACTIVE: Force inactive level on OC2REF.
  * @retval None
  */
void TIM1_ForcedOC2Config(TIM1_ForcedAction_TypeDef TIM1_ForcedAction)
{
    /* Check the parameters */
    assert_param(IS_TIM1_FORCED_ACTION_OK(TIM1_ForcedAction));

    /* Reset the OCM Bits & Configure the Forced output Mode */
    TIM1->CCMR2  =  (u8)((TIM1->CCMR2 & (u8)(~TIM1_CCMR_OCM)) | (u8)TIM1_ForcedAction);
}


/**
  * @brief Forces the TIM1 Channel3 output waveform to active or inactive level.
  * @param[in] TIM1_ForcedAction specifies the forced Action to be set to the output waveform.
  * This parameter can be one of the following values:
  *                       - TIM1_FORCEDACTION_ACTIVE: Force active level on OC3REF
  *                       - TIM1_FORCEDACTION_INACTIVE: Force inactive level on
  *                         OC3REF.
  * @retval None
  */
void TIM1_ForcedOC3Config(TIM1_ForcedAction_TypeDef TIM1_ForcedAction)
{
    /* Check the parameters */
    assert_param(IS_TIM1_FORCED_ACTION_OK(TIM1_ForcedAction));

    /* Reset the OCM Bits */ /* Configure The Forced output Mode */
    TIM1->CCMR3  =  (u8)((TIM1->CCMR3 & (u8)(~TIM1_CCMR_OCM))  | (u8)TIM1_ForcedAction);
}


/**
  * @brief Forces the TIM1 Channel4 output waveform to active or inactive level.
  * @param[in] TIM1_ForcedAction specifies the forced Action to be set to the output waveform.
  * This parameter can be one of the following values:
  *                       - TIM1_FORCEDACTION_ACTIVE: Force active level on OC4REF
  *                       - TIM1_FORCEDACTION_INACTIVE: Force inactive level on
  *                         OC4REF.
  * @retval None
  */
void TIM1_ForcedOC4Config(TIM1_ForcedAction_TypeDef TIM1_ForcedAction)
{
    /* Check the parameters */
    assert_param(IS_TIM1_FORCED_ACTION_OK(TIM1_ForcedAction));

    /* Reset the OCM Bits & Configure the Forced output Mode */
    TIM1->CCMR4  =  (u8)((TIM1->CCMR4 & (u8)(~TIM1_CCMR_OCM)) | (u8)TIM1_ForcedAction);
}


/**
  * @brief Enables or disables TIM1 peripheral Preload register on ARR.
  * @param[in] NewState new state of the TIM1 peripheral Preload register.
  * This parameter can be ENABLE or DISABLE.

⌨️ 快捷键说明

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