📄 stm32f10x_tim.c
字号:
* (2)TIM_ICInitStruct:指向一个包含特定TIMx外设的配置信息的TIM_ICInitTypeDef结构的指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
{
u16 icoppositepolarity = TIM_ICPolarity_Rising;
u16 icoppositeselection = TIM_ICSelection_DirectTI;
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
/* Select the Opposite Input Polarity [选择相反的输入极性]*/
if (TIM_ICInitStruct->TIM_ICPolarity == TIM_ICPolarity_Rising)
{
icoppositepolarity = TIM_ICPolarity_Falling;
}
else
{
icoppositepolarity = TIM_ICPolarity_Rising;
}
/* Select the Opposite Input [选择相反的输入]*/
if (TIM_ICInitStruct->TIM_ICSelection == TIM_ICSelection_DirectTI)
{
icoppositeselection = TIM_ICSelection_IndirectTI;
}
else
{
icoppositeselection = TIM_ICSelection_DirectTI;
}
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);
/* TI2 Configuration [TI2配置]*/
TI2_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);
/* Set the Input Capture Prescaler value [设置输入捕捉预分频器值]*/
TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
}
else
{
/* 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);
/* TI1 Configuration [TI1配置]*/
TI1_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter);
/* Set the Input Capture Prescaler value [设置输入捕捉预分频器值]*/
TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
}
}
/*******************************************************************************
* 函数名称: TIM_BDTRConfig
* 功能描述: 配置:间断特征,滞后时间,锁级别,OSSI,OSSR状态和AOE(自动输出使能).
* 输入参数:(1)TIMx:此处x可以是1到8以选择外设.
* (2)TIM_BDTRInitStruct:指向一个包含特定TIMx外设的配置信息的TIM_BDTRInitTypeDef结构的指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_18_PERIPH(TIMx));
assert_param(IS_TIM_OSSR_STATE(TIM_BDTRInitStruct->TIM_OSSRState));
assert_param(IS_TIM_OSSI_STATE(TIM_BDTRInitStruct->TIM_OSSIState));
assert_param(IS_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->TIM_LOCKLevel));
assert_param(IS_TIM_BREAK_STATE(TIM_BDTRInitStruct->TIM_Break));
assert_param(IS_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->TIM_BreakPolarity));
assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->TIM_AutomaticOutput));
/* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State,
the OSSI State, the dead time value and the Automatic Output Enable Bit [配置:锁级别,间断允许位和极性,OSSR状态,OSSI状态,滞后时间和自动输出使能位]*/
TIMx->BDTR = (u32)TIM_BDTRInitStruct->TIM_OSSRState | TIM_BDTRInitStruct->TIM_OSSIState |
TIM_BDTRInitStruct->TIM_LOCKLevel | TIM_BDTRInitStruct->TIM_DeadTime |
TIM_BDTRInitStruct->TIM_Break | TIM_BDTRInitStruct->TIM_BreakPolarity |
TIM_BDTRInitStruct->TIM_AutomaticOutput;
}
/*******************************************************************************
* 函数名称: TIM_TimeBaseStructInit
* 功能描述: 使用缺省值填充TIM_TimeBaseInitStruct的每一个成员.
* 输入参数: TIM_TimeBaseInitStruct:指向一个将被初始化的TIM_TimeBaseInitTypeDef结构的指针
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
{
/* Set the default configuration [设置成默认配置]*/
TIM_TimeBaseInitStruct->TIM_Period = 0xFFFF;
TIM_TimeBaseInitStruct->TIM_Prescaler = 0x0000;
TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct->TIM_RepetitionCounter = 0x0000;
}
/*******************************************************************************
* 函数名称: TIM_OCStructInit
* 功能描述: 使用缺省值填充TIM_OCInitStruct的每一个成员
* 输入参数: TIM_OCInitStruct:指向一个将被初始化的TIM_OCInitStruct结构的指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct)
{
/* Set the default configuration [设置成默认配置]*/
TIM_OCInitStruct->TIM_OCMode = TIM_OCMode_Timing;
TIM_OCInitStruct->TIM_OutputState = TIM_OutputState_Disable;
TIM_OCInitStruct->TIM_OutputNState = TIM_OutputNState_Disable;
TIM_OCInitStruct->TIM_Pulse = 0x0000;
TIM_OCInitStruct->TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStruct->TIM_OCNPolarity = TIM_OCPolarity_High;
TIM_OCInitStruct->TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStruct->TIM_OCNIdleState = TIM_OCNIdleState_Reset;
}
/*******************************************************************************
* 函数名称: TIM_ICStructInit
* 功能描述: 使用缺省值填充TIM_ICInitStruct的每一个成员.
* 输入参数: TIM_ICInitStruct:指向一个将被初始化的TIM_ICInitStruct结构的指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct)
{
/* Set the default configuration [设置成默认配置]*/
TIM_ICInitStruct->TIM_Channel = TIM_Channel_1;
TIM_ICInitStruct->TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStruct->TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStruct->TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStruct->TIM_ICFilter = 0x00;
}
/*******************************************************************************
* 函数名称: TIM_BDTRStructInit
* 功能描述: 将TIM1_BDTRStruct中的成员赋为默认值.
* 输入参数: TIM1_BDTRInitStruct:指向一个将被初始化的TIM1_BDTRInitStruct结构体。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct)
{
/* Set the default configuration [设置成默认配置]*/
TIM_BDTRInitStruct->TIM_OSSRState = TIM_OSSRState_Disable;
TIM_BDTRInitStruct->TIM_OSSIState = TIM_OSSIState_Disable;
TIM_BDTRInitStruct->TIM_LOCKLevel = TIM_LOCKLevel_OFF;
TIM_BDTRInitStruct->TIM_DeadTime = 0x00;
TIM_BDTRInitStruct->TIM_Break = TIM_Break_Disable;
TIM_BDTRInitStruct->TIM_BreakPolarity = TIM_BreakPolarity_Low;
TIM_BDTRInitStruct->TIM_AutomaticOutput = TIM_AutomaticOutput_Disable;
}
/*******************************************************************************
* 函数名称: TIM_Cmd
* 功能描述: 使能或关闭特定的TIM外设.
* 输入参数: (1)TIMx:此处x可以是1到8以选择外设.
* (2)NewState:此TIM外设的新状态,该参数可以是ENABLE或DISABLE。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_ALL_PERIPH(TIMx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the TIM Counter [允许tim计数器]*/
TIMx->CR1 |= CR1_CEN_Set;
}
else
{
/* Disable the TIM Counter [禁止tim计数器]*/
TIMx->CR1 &= CR1_CEN_Reset;
}
}
/*******************************************************************************
* 函数名称: TIM_CtrlPWMOutputs
* 功能描述: 使能或禁用TIM外围主输出.
* 输入参数:(1)TIMx:此处x可以是1到8以选择外设.
* (2)Newstate:TIM1外围设备主输出的新状态。这个参数能够取:ENABLE或者DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_18_PERIPH(TIMx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the TIM Main Output [允许TIM主输出]*/
TIMx->BDTR |= BDTR_MOE_Set;
}
else
{
/* Disable the TIM Main Output [禁止TIM主输出]*/
TIMx->BDTR &= BDTR_MOE_Reset;
}
}
/*******************************************************************************
* 函数名称: TIM_ITConfig
* 功能描述: 使能或关闭特定的TIM中断.
* 输入参数: (1)TIMx:此处x可以是1到8以选择外设.
* (2)TIM_IT: 将被使能或关闭的TIM中断源。
* TIM_IT这个参数允许的值:
* - TIM_IT_Update: TIM更新中断源
* - TIM_IT_CC1: TIM捕获/比较1中断源
* - TIM_IT_CC2: TIM捕获/比较2中断源
* - TIM_IT_CC3: TIM捕获/比较3中断源
* - TIM_IT_CC4: TIM捕获/比较4中断源
* - TIM_IT_COM: TIM 交换中断源
* - TIM_IT_Trigger: TIM触发器中断源
* - TIM_IT_Break: TIM1间断中断源
* (3)NewState:特定TIM1中断的新状态。这个参数能够取:ENABLE或者DISABLE
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ITConfig(TIM_TypeDef* TIMx, u16 TIM_IT, FunctionalState NewState)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_ALL_PERIPH(TIMx));
assert_param(IS_TIM_IT(TIM_IT));
assert_param(IS_TIM_PERIPH_IT((TIMx), (TIM_IT)));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the Interrupt sources [允许中断源]*/
TIMx->DIER |= TIM_IT;
}
else
{
/* Disable the Interrupt sources [禁止中断源]*/
TIMx->DIER &= (u16)~TIM_IT;
}
}
/*******************************************************************************
* 函数名称: TIM_GenerateEvent
* 功能描述: 配置将由软件引发的TIM事件.
* 输入参数: (1)TIMx:此处x可以是1到8以选择外设.
* TIM1_EventSource:指明TIM1软件事件源。
* 这个参数可以取下面的值之一:
* - TIM_EventSource_Update: 定时器更新事件源
* - TIM_EventSource_CC1: 定时器比较捕捉1事件源
* - TIM_EventSource_CC2: 定时器比较捕捉2事件源
* - TIM_EventSource_CC3: 定时器比较捕捉3事件源
* - TIM_EventSource_CC4: 定时器比较捕捉4事件源
* - TIM_EventSource_Trigger: 定时器触发器事件源
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_GenerateEvent(TIM_TypeDef* TIMx, u16 TIM_EventSource)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_ALL_PERIPH(TIMx));
assert_param(IS_TIM_EVENT_SOURCE(TIM_EventSource));
assert_param(IS_TIM_PERIPH_EVENT((TIMx), (TIM_EventSource)));
/* Set the event sources [设置事件源]*/
TIMx->EGR = TIM_EventSource;
}
/*******************************************************************************
* 函数名称: TIM_DMAConfig
* 功能描述: 配置某个TIM的DMA接口.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)TIM_DMABase: DMA基址。
* 这个参数可以取下面的值之一:
* - TIM_DMABase_CR, TIM_DMABase_CR2, TIM_DMABase_SMCR,
* TIM_DMABase_DIER, TIM1_DMABase_SR, TIM_DMABase_EGR,
* TIM_DMABase_CCMR1, TIM_DMABase_CCMR2, TIM_DMABase_CCER,
* TIM_DMABase_CNT, TIM_DMABase_PSC, TIM_DMABase_ARR,
* TIM_DMABase_RCR, TIM_DMABase_CCR1, TIM_DMABase_CCR2,
* TIM_DMABase_CCR3, TIM_DMABase_CCR4, TIM_DMABase_BDTR,
* TIM_DMABase_DCR.
* (3)TIM_DMABurstLength: DMA猝发长度。
* 这个参数可以取下面两个值之一:
* TIM_DMABurstLength_1Byte and TIM_DMABurstLength_18Bytes.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_DMAConfig(TIM_TypeDef* TIMx, u16 TIM_DMABase, u16 TIM_DMABurstLength)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -