📄 stm32f10x_tim.c
字号:
/* Check the parameters */
assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));
assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));
/* Configure the ETR Clock source */
TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter);
/* Select the External clock mode1 */
TIMx->SMCR &= SMCR_SMS_Mask;
TIMx->SMCR |= TIM_SlaveMode_External1;
/* Select the Trigger selection : ETRF */
TIMx->SMCR &= SMCR_TS_Mask;
TIMx->SMCR |= TIM_TS_ETRF;
}
/*******************************************************************************
* Function Name : TIM_ETRClockMode2Config
* Description : Configures the External clock Mode2
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_ExtTRGPrescaler: The external Trigger Prescaler.
* It can be one of the following values:
* - TIM_ExtTRGPSC_OFF
* - TIM_ExtTRGPSC_DIV2
* - TIM_ExtTRGPSC_DIV4
* - TIM_ExtTRGPSC_DIV8
* - TIM_ExtTRGPolarity: The external Trigger Polarity.
* It can be one of the following values:
* - TIM_ExtTRGPolarity_Inverted
* - TIM_ExtTRGPolarity_NonInverted
* - ExtTRGFilter: External Trigger Filter.
* This parameter must be a value between 0x00 and 0x0F
* Output : None
* Return : None
*******************************************************************************/
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, u16 TIM_ExtTRGPrescaler,
u16 TIM_ExtTRGPolarity, u8 ExtTRGFilter)
{
/* Check the parameters */
assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));
assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));
/* Configure the ETR Clock source */
TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter);
/* Enable the External clock mode2 */
TIMx->SMCR |= SMCR_ECE_Set;
}
/*******************************************************************************
* Function Name : TIM_ETRConfig
* Description : Configures the TIMx External Trigger (ETR).
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_ExtTRGPrescaler: The external Trigger Prescaler.
* This parameter can be one of the following values:
* - TIM_ExtTRGPSC_OFF
* - TIM_ExtTRGPSC_DIV2
* - TIM_ExtTRGPSC_DIV4
* - TIM_ExtTRGPSC_DIV8
* - TIM_ExtTRGPolarity: The external Trigger Polarity.
* This parameter can be one of the following values:
* - TIM_ExtTRGPolarity_Inverted
* - TIM_ExtTRGPolarity_NonInverted
* - ExtTRGFilter: External Trigger Filter.
* This parameter must be a value between 0x00 and 0x0F.
* Output : None
* Return : None
*******************************************************************************/
void TIM_ETRConfig(TIM_TypeDef* TIMx, u16 TIM_ExtTRGPrescaler, u16 TIM_ExtTRGPolarity,
u8 ExtTRGFilter)
{
u32 tmpsmcr = 0;
tmpsmcr = TIMx->SMCR;
/* Set the Prescaler, the Filter value and the Polarity */
tmpsmcr &= SMCR_ETR_Mask;
tmpsmcr |= TIM_ExtTRGPrescaler | TIM_ExtTRGPolarity | (u16)((u16)ExtTRGFilter << 8);
TIMx->SMCR = (u16)tmpsmcr;
}
/*******************************************************************************
* Function Name : TIM_SelectInputTrigger
* Description : Selects the Input Trigger source
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_InputTriggerSource: The Input Trigger source.
* This parameter can be one of the following values:
* - TIM_TS_ITR0: Internal Trigger 0
* - TIM_TS_ITR1: Internal Trigger 1
* - TIM_TS_ITR2: Internal Trigger 2
* - TIM_TS_ITR3: Internal Trigger 3
* - TIM_TS_TI1F_ED: TI1 Edge Detector
* - TIM_TS_TI1FP1: Filtered Timer Input 1
* - TIM_TS_TI2FP2: Filtered Timer Input 2
* - TIM_TS_ETRF: External Trigger input
* Output : None
* Return : None
*******************************************************************************/
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, u16 TIM_InputTriggerSource)
{
u32 tmpsmcr = 0;
/* Check the parameters */
assert_param(IS_TIM_TRIGGER_SELECTION(TIM_InputTriggerSource));
tmpsmcr = TIMx->SMCR;
/* Select the Tgigger Source */
tmpsmcr &= SMCR_TS_Mask;
tmpsmcr |= TIM_InputTriggerSource;
TIMx->SMCR = (u16)tmpsmcr;
}
/*******************************************************************************
* Function Name : TIM_PrescalerConfig
* Description : Configures the TIMx Prescaler.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - Prescaler: specifies the Prescaler Register value
* - TIM_PSCReloadMode: specifies the TIM Prescaler Reload mode
* This parameter can be one of the following values:
* - TIM_PSCReloadMode_Update: The Prescaler is loaded at
* the update event.
* - TIM_PSCReloadMode_Immediate: The Prescaler is loaded
* immediatly.
* Output : None
* Return : None
*******************************************************************************/
void TIM_PrescalerConfig(TIM_TypeDef* TIMx, u16 Prescaler, u16 TIM_PSCReloadMode)
{
/* Check the parameters */
assert_param(IS_TIM_PRESCALER_RELOAD(TIM_PSCReloadMode));
/* Set the Prescaler value */
TIMx->PSC = Prescaler;
/* Set or reset the UG Bit */
if (TIM_PSCReloadMode == TIM_PSCReloadMode_Immediate)
{
TIMx->EGR |= TIM_EventSource_Update;
}
else
{
TIMx->EGR &= TIM_EventSource_Update;
}
}
/*******************************************************************************
* Function Name : TIM_CounterModeConfig
* Description : Specifies the TIMx Counter Mode to be used.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_CounterMode: specifies the Counter Mode to be used
* This parameter can be one of the following values:
* - TIM_CounterMode_Up: TIM Up Counting Mode
* - TIM_CounterMode_Down: TIM Down Counting Mode
* - TIM_CounterMode_CenterAligned1: TIM Center Aligned Mode1
* - TIM_CounterMode_CenterAligned2: TIM Center Aligned Mode2
* - TIM_CounterMode_CenterAligned3: TIM Center Aligned Mode3
* Output : None
* Return : None
*******************************************************************************/
void TIM_CounterModeConfig(TIM_TypeDef* TIMx, u16 TIM_CounterMode)
{
u32 tmpcr1 = 0;
/* Check the parameters */
assert_param(IS_TIM_COUNTER_MODE(TIM_CounterMode));
tmpcr1 = TIMx->CR1;
/* Reset the CMS and DIR Bits */
tmpcr1 &= CR1_CounterMode_Mask;
/* Set the Counter Mode */
tmpcr1 |= TIM_CounterMode;
TIMx->CR1 = (u16)tmpcr1;
}
/*******************************************************************************
* Function Name : TIM_ForcedOC1Config
* Description : Forces the TIMx output 1 waveform to active or inactive level.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_ForcedAction: specifies the forced Action to be set to
* the output waveform.
* This parameter can be one of the following values:
* - TIM_ForcedAction_Active: Force active level on OC1REF
* - TIM_ForcedAction_InActive: Force inactive level on
* OC1REF.
* Output : None
* Return : None
*******************************************************************************/
void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u32 tmpccmr1 = 0;
/* Check the parameters */
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr1 = TIMx->CCMR1;
/* Reset the OCM Bits */
tmpccmr1 &= CCMR_OCM13_Mask;
/* Configure The Forced output Mode */
tmpccmr1 |= TIM_ForcedAction;
TIMx->CCMR1 = (u16)tmpccmr1;
}
/*******************************************************************************
* Function Name : TIM_ForcedOC2Config
* Description : Forces the TIMx output 2 waveform to active or inactive level.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_ForcedAction: specifies the forced Action to be set to
* the output waveform.
* This parameter can be one of the following values:
* - TIM_ForcedAction_Active: Force active level on OC2REF
* - TIM_ForcedAction_InActive: Force inactive level on
* OC2REF.
* Output : None
* Return : None
*******************************************************************************/
void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u32 tmpccmr1 = 0;
/* Check the parameters */
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr1 = TIMx->CCMR1;
/* Reset the OCM Bits */
tmpccmr1 &= CCMR_OCM24_Mask;
/* Configure The Forced output Mode */
tmpccmr1 |= (u16)(TIM_ForcedAction << 8);
TIMx->CCMR1 = (u16)tmpccmr1;
}
/*******************************************************************************
* Function Name : TIM_ForcedOC3Config
* Description : Forces the TIMx output 3 waveform to active or inactive level.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_ForcedAction: specifies the forced Action to be set to
* the output waveform.
* This parameter can be one of the following values:
* - TIM_ForcedAction_Active: Force active level on OC3REF
* - TIM_ForcedAction_InActive: Force inactive level on
* OC3REF.
* Output : None
* Return : None
*******************************************************************************/
void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u32 tmpccmr2 = 0;
/* Check the parameters */
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr2 = TIMx->CCMR2;
/* Reset the OCM Bits */
tmpccmr2 &= CCMR_OCM13_Mask;
/* Configure The Forced output Mode */
tmpccmr2 |= TIM_ForcedAction;
TIMx->CCMR2 = (u16)tmpccmr2;
}
/*******************************************************************************
* Function Name : TIM_ForcedOC4Config
* Description : Forces the TIMx output 4 waveform to active or inactive level.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - TIM_ForcedAction: specifies the forced Action to be set to
* the output waveform.
* This parameter can be one of the following values:
* - TIM_ForcedAction_Active: Force active level on OC4REF
* - TIM_ForcedAction_InActive: Force inactive level on
* OC4REF.
* Output : None
* Return : None
*******************************************************************************/
void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u32 tmpccmr2 = 0;
/* Check the parameters */
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr2 = TIMx->CCMR2;
/* Reset the OCM Bits */
tmpccmr2 &= CCMR_OCM24_Mask;
/* Configure The Forced output Mode */
tmpccmr2 |= (u16)(TIM_ForcedAction << 8);
TIMx->CCMR2 = (u16)tmpccmr2;
}
/*******************************************************************************
* Function Name : TIM_ARRPreloadConfig
* Description : Enables or disables TIMx peripheral Preload register on ARR.
* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.
* - Newstate: new state of the TIMx peripheral Preload register
* This parameter can be: ENABLE or DISABLE.
* Output : None
* Return : None
*******************************************************************************/
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState Newstate)
{
u32 tmpcr1 = 0;
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(Newstate));
tmpcr1 = TIMx->CR1;
if (Newstate != DISABLE)
{
/* Set the ARR Preload Bit */
tmpcr1 |= CR1_ARPE_Set;
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -