STM32 TIM输入捕获测频率占空比库函数

目录

一、输入捕获初始化函数

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函数读出。

TIM_GetCapture1

TIM_GetCapture2

TIM_GetCapture3

TIM_GetCapture4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值