📄 stm32f10x_tim.c
字号:
/* Write to TIMx CR1 register [写TIMx CR1 寄存器]*/
TIMx->CR1 = tmpcr1;
}
/*******************************************************************************
* 函数名称: TIM_SelectInputTrigger
* 功能描述: 选择输入触发源
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)TIM_InputTriggerSource: 输入触发源.
* 这个参数可以取下面的值之一:
* - TIM_TS_ITR0: 内部触发 0
* - TIM_TS_ITR1: 内部触发 1
* - TIM_TS_ITR2: 内部触发 2
* - TIM_TS_ITR3: 内部触发 3
* - TIM_TS_TI1F_ED: TI1 边沿检测
* - TIM_TS_TI1FP1: 过滤器时钟输入 1
* - TIM_TS_TI2FP2: 过滤器时钟输入 2
* - TIM_TS_ETRF: 扩展触发输入
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, u16 TIM_InputTriggerSource)
{
u16 tmpsmcr = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
assert_param(IS_TIM_TRIGGER_SELECTION(TIM_InputTriggerSource));
/* Get the TIMx SMCR register value [取得TIMx SMCR寄存器值]*/
tmpsmcr = TIMx->SMCR;
/* Reset the TS Bits [复位TS]*/
tmpsmcr &= SMCR_TS_Mask;
/* Set the Input Trigger source [设置输入中断源]*/
tmpsmcr |= TIM_InputTriggerSource;
/* Write to TIMx SMCR [写TIMx SMCR]*/
TIMx->SMCR = tmpsmcr;
}
/*******************************************************************************
* 函数名称: TIM_EncoderInterfaceConfig
* 功能描述: 配置TIM的编码器接口
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)IM_EncoderMode:编码器模式.
* 这个参数可以取下面的值之一:
* - TIM_EncoderMode_TI1: TIM编码器使用模式1.
* - TIM_EncoderMode_TI2: TIM编码器使用模式2.
* - TIM_EncoderMode_TI12:TIM编码器使用模式3.
* (3)TIM_IC1Polarity: TI1的极性.
* 这个参数可以取下面的值之一:
* - TIM_ICPolarity_Falling: 输入捕获下降沿.
* - TIM_ICPolarity_Rising: 输入捕获上升沿.
* (4)TIM_IC2Polarity:TI2的极性.
* 这个参数可以取下面的值之一:
* - TIM_ICPolarity_Falling: 输入捕获下降沿.
* - 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));
assert_param(IS_TIM_IC_POLARITY(TIM_IC1Polarity));
assert_param(IS_TIM_IC_POLARITY(TIM_IC2Polarity));
/* Get the TIMx SMCR register value [取得TIMx SMCR寄存器值]*/
tmpsmcr = TIMx->SMCR;
/* Get the TIMx CCMR1 register value [取得TIMx 捕获/比较模式寄存器1的寄存器值]*/
tmpccmr1 = TIMx->CCMR1;
/* Get the TIMx CCER register value [取得TIMx 捕获/比较使能寄存器的寄存器值]*/
tmpccer = TIMx->CCER;
/* Set the encoder Mode [设置编码模式]*/
tmpsmcr &= SMCR_SMS_Mask;
tmpsmcr |= TIM_EncoderMode;
/* Select the Capture Compare 1 and the Capture Compare 2 as input [选择比较捕捉1和较捕捉2作为输入]*/
tmpccmr1 &= CCMR_CC13S_Mask & CCMR_CC24S_Mask;
tmpccmr1 |= CCMR_TI13Direct_Set | CCMR_TI24Direct_Set;
/* Set the TI1 and the TI2 Polarities [设置TI1和TI2的极性]*/
tmpccer &= CCER_CC1P_Reset & CCER_CC2P_Reset;
tmpccer |= (TIM_IC1Polarity | (u16)(TIM_IC2Polarity << 4));
/* Write to TIMx SMCR [写TIMx SMCR]*/
TIMx->SMCR = tmpsmcr;
/* Write to TIMx CCMR1 [写TIMx捕获/比较模式寄存器1]*/
TIMx->CCMR1 = tmpccmr1;
/* Write to TIMx CCER [写TIMx捕获/比较使能寄存器]*/
TIMx->CCER = tmpccer;
}
/*******************************************************************************
* 函数名称: TIM_ForcedOC1Config
* 功能描述: 强制TIMx信道1的输出波形到有效电平或者无效电平.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)TIM1_ForcedAction:指定对输出波形的强制行为..
* 这个参数可以取下面的值之一:
* - TIM_ForcedAction_Active: 强制OCxREF为有效电平
* - TIM_ForcedAction_InActive: 强制OCxREF为无效电平.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u16 tmpccmr1 = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr1 = TIMx->CCMR1;
/* Reset the OC1M Bits [复位OC1M]*/
tmpccmr1 &= CCMR_OC13M_Mask;
/* Configure The Forced output Mode [配置强制输出模式]*/
tmpccmr1 |= TIM_ForcedAction;
/* Write to TIMx CCMR1 register [写TIMx CCMR1寄存器]*/
TIMx->CCMR1 = tmpccmr1;
}
/*******************************************************************************
* 函数名称: TIM_ForcedOC2Config
* 功能描述: 强制TIMx信道2的输出波形到有效或无效电平。.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)TIMx_ForcedAction:指定对输出波形的强制行为.
* 这个参数可以取下面的值之一:
* - TIM_ForcedAction_Active: 强制OC2REF为有效电平
* - TIM_ForcedAction_InActive:强制OC2REF为无效电平
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u16 tmpccmr1 = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr1 = TIMx->CCMR1;
/* Reset the OC2M Bits [复位OC2M]*/
tmpccmr1 &= CCMR_OC24M_Mask;
/* Configure The Forced output Mode [配置强制输出模式]*/
tmpccmr1 |= (u16)(TIM_ForcedAction << 8);
/* Write to TIMx CCMR1 register [写TIMx CCMR1寄存器]*/
TIMx->CCMR1 = tmpccmr1;
}
/*******************************************************************************
* 函数名称: TIM_ForcedOC3Config
* 功能描述: 强制TIMx信道3的输出波形到有效或无效电平。
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)TIMx_ForcedAction:指定对输出波形的强制行为.
* 这个参数可以取下面的值之一:
* - TIM_ForcedAction_Active: 强制OC3REF为有效电平
* - TIM_ForcedAction_InActive:强制OC3REF为无效电平.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u16 tmpccmr2 = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr2 = TIMx->CCMR2;
/* Reset the OC1M Bits [复位OC1M]*/
tmpccmr2 &= CCMR_OC13M_Mask;
/* Configure The Forced output Mode [配置强制输出模式]*/
tmpccmr2 |= TIM_ForcedAction;
/* Write to TIMx CCMR2 register [写TIMx CCMR2寄存器]*/
TIMx->CCMR2 = tmpccmr2;
}
/*******************************************************************************
* 函数名称: TIM_ForcedOC4Config
* 功能描述: 强制TIMx信道4的输出波形到有效或无效电平。
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)TIMx_ForcedAction:指定对输出波形的强制行为.
* 这个参数可以取下面的值之一:
* - TIM_ForcedAction_Active: 强制OC4REF为有效电平
* - TIM_ForcedAction_InActive:强制OC4REF为无效电平.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)
{
u16 tmpccmr2 = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction));
tmpccmr2 = TIMx->CCMR2;
/* Reset the OC2M Bits [复位OC2M]*/
tmpccmr2 &= CCMR_OC24M_Mask;
/* Configure The Forced output Mode [配置强制输出模式]*/
tmpccmr2 |= (u16)(TIM_ForcedAction << 8);
/* Write to TIMx CCMR2 register [写TIMx CCMR2寄存器]*/
TIMx->CCMR2 = tmpccmr2;
}
/*******************************************************************************
* 函数名称: TIM_ARRPreloadConfig
* 功能描述: 使能或禁用TIMx外设ARR预载寄存器.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)Newstate:在TIM1_CR1寄存器中的ARPE位的新状态.这个参数能够取:ENABLE或者DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_ARRPreloadConfig(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 ARR Preload Bit [置位ARR的预装载位]*/
TIMx->CR1 |= CR1_ARPE_Set;
}
else
{
/* Reset the ARR Preload Bit [复位ARR的预装载位]*/
TIMx->CR1 &= CR1_ARPE_Reset;
}
}
/*******************************************************************************
* 函数名称: TIM_SelectCOM
* 功能描述: 选择TIM外围设备交换事件.
* 输入参数:(1)TIMx:此处x可以是1到8以选择外设.
* (2)Newstate:交换事件的新状态.这个参数能够取:ENABLE或者DISABLE
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_18_PERIPH(TIMx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Set the COM Bit [置位COM位]*/
TIMx->CR2 |= CR2_CCUS_Set;
}
else
{
/* Reset the COM Bit [复位COM位]*/
TIMx->CR2 &= CR2_CCUS_Reset;
}
}
/*******************************************************************************
* 函数名称: TIM_SelectCCDMA
* 功能描述: 选择TIMx外围设备捕获比较DMA源.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
* (2)Newstate:捕获比较DMA源的新状态.这个参数能够取:ENABLE或者DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState)
{
/* Check the parameters [检查参数]*/
assert_param(IS_TIM_123458_PERIPH(TIMx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Set the CCDS Bit [置位CCDS位]*/
TIMx->CR2 |= CR2_CCDS_Set;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -