目录
一、输入捕获初始化函数
TIM_ICInit
TIM_PWMIConfig
TIM_ICStructInit
二、主从触发模式对应函数
TIM_SelectInputTrigger
TIM_SelectOutputTrigger
TIM_SelectSlaveMode
三、配置分频器函数
TIM_SetIC1Prescaler
TIM_SetIC2Prescaler
TIM_SetIC3Prescaler
TIM_SetIC4Prescaler
四、读取CCR函数
TIM_GetCapture1
TIM_GetCapture2
TIM_GetCapture3
TIM_GetCapture4
一、输入捕获初始化函数
TIM_ICInit
结构体配置输入捕获单元函数
- 第一个参数,选择定时器
- 第二个参数,包含各个配置的结构体
输入捕获和输出比较都有4个通道,函数TIM_OC1Init、TIM_OC2Init、TIM_OC3Init、TIM_OC4Init,4个通道每个通道单独占一个函数。而TIM_ICInit函数,4个通道共用一个函数。在结构体里会额外有一个参数,可以用来选择具体是配置哪个通道。因为可能有交叉通道的配置,所以函数合在一起比较方便。
代码示例:
TIM_ICInitTypeDef TIM_ICInitStructure;TIM_ICInitStructure.TIM_Channel=TIM_Channel_2;//TIM_Channel选择通道TIM_ICInitStructure.TIM_ICFilter=0xF;//TIM_ICFilter用来配置输入捕获的滤波器TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Falling;//TIM_ICPolarity极性,TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICSelection_DirectTI;//TIM_ICPrescaler分频器TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_IndirectTI;//TIM_ICSelection配置数据选择器TIM_ICInit(TIM3,&TIM_ICInitStructure);
TIM_PWMIConfig
函数用于初始化输入捕获单元。
- TIM_ICInit函数只能单一地配置一个通道。
- TIM_PWM函数可以快速配置两个通道,把外设电路结构配置成PWMI基本结构图所展示的模式。
代码注释:
/*** @brief Configures the TIM peripheral according to the specified* parameters in the TIM_ICInitStruct to measure an external PWM signal.* @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral.* @param TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure* that contains the configuration information for the specified TIM peripheral.* @retval None*/
代码示例:
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;//TIM_Channel选择通道
TIM_ICInitStructure.TIM_ICFilter=0xF;//TIM_ICFilter用来配置输入捕获的滤波器
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//TIM_ICPolarity极性
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICSelection_DirectTI;//TIM_ICPrescaler分频器
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;//TIM_ICSelection配置数据选择器
TIM_PWMIConfig(TIM3,&TIM_ICInitStructure);
TIM_ICStructInit
函数可以给输入捕获结构体赋一个初始值。
代码注释:
/*** @brief Fills each TIM_ICInitStruct member with its default value.* @param TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure which will* be initialized.* @retval None*/
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_SelectInputTrigger
选择输入触发源TRGI,对应主从触发模式图中的从模式触发源选择,调用这个函数就能选择从模式的触发源了,如TI1FP1等。
代码示例:
TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);
TIM_SelectOutputTrigger
选择输出触发源TRGO,对应主从触发模式图中的选择主模式输出的触发源。
代码示例:
TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);
TIM_SelectSlaveMode
选择从模式,对应主从触发模式图中的从模式选择的部分。
代码示例:
TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);
三、配置分频器函数
以下四个函数分别单独配置通道1、2、3、4的分配器,其参数结构体里也可以配置,是一样的效果。
TIM_SetIC1Prescaler
TIM_SetIC2Prescaler
TIM_SetIC3Prescaler
TIM_SetIC4Prescaler
四、读取CCR函数
TIM_GetCapture1、TIM_GetCapture2、TIM_GetCapture3、TIM_GetCapture4函数读取4个通道的CCR,这四个函数和TIM_SetIC1Prescaler、TIM_SetIC2Prescaler、TIM_SetIC3Prescaler、TIM_SetIC4Prescaler四个函数是对应的,读写的都是CCR寄存器。
- 输出比较模式下,CCR是只写的,选择用TIM_SetCompare1、TIM_SetCompare2、TIM_SetCompare3、TIM_SetCompare4函数写入。
- 输入捕获模式下,CCR是只读的,要选择用TIM_GetCapture1、TIM_GetCapture2、TIM_GetCapture3、TIM_GetCapture4函数读出。