TIM_PWMIConfig
时间: 2024-06-16 20:01:00 浏览: 14
TIM_PWMIConfig是用于配置PWM输入模式的结构体,其中包括了如下几个成员:
1. TIM_Channel: 指定PWM输入模式的通道,取值范围为TIM_CHANNEL_1到TIM_CHANNEL_4。
2. TIM_ICPolarity: 指定PWM输入信号的极性,取值为TIM_ICPOLARITY_RISING或TIM_ICPOLARITY_FALLING。
3. TIM_ICSelection: 指定输入捕获通道,取值为TIM_ICSELECTION_DIRECTTI或TIM_ICSELECTION_INDIRECTTI。
4. TIM_ICPrescaler: 指定输入捕获通道的预分频值,取值范围为TIM_ICPSC_DIV1到TIM_ICPSC_DIV8。
5. TIM_ICFilter: 指定输入捕获通道的滤波器系数,取值范围为0到15。
通过对TIM_PWMIConfig的配置,可以实现对PWM输入信号的采集和处理。
相关问题
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1; TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1; TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
这段代码是用来初始化TIM2定时器的基本配置,并启用了定时器的更新中断。让我逐行解释一下:
1. `TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;` 声明了一个结构体变量 `TIM_TimeBaseInitStructure`,用于配置TIM2定时器的基本参数。
2. `TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;` 设置时钟分频系数为1,即不分频。
3. `TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;` 设置计数器向上计数模式。
4. `TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1;` 设置计数器自动重装载值,即计数器达到该值时会触发更新事件。
5. `TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;` 设置预分频值,用于将输入时钟频率分频到计数器的工作频率。
6. `TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;` 设置重复计数器的值,用于生成PWM信号时的重复周期。
7. `TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);` 使用上述配置参数对TIM2定时器进行初始化。
8. `TIM_ClearFlag(TIM2, TIM_FLAG_Update);` 清除更新事件标志位。
9. `TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);` 使能定时器的更新中断,即当计数器达到自动重装载值时会触发中断。
解释这段代码static void AdvancedTim_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; TIM_BDTRInitTypeDef TIM_BDTRInitStruct; /*开时钟*/ RCC_APB2PeriphClockCmd(ADVANCED_TIM_CLK, ENABLE); /*配置时基参数*/ TIM_TimeBaseInitStruct.TIM_Prescaler=ADVANCED_TIM_PSC;/*预分频因子*/ TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;/*向上计数*/ TIM_TimeBaseInitStruct.TIM_Period=ADVANCED_TIM_ARR;/*周期*/ TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;/*Tdts:这里会与死区时间有关*/ TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;/*不使用重复计数器*/ /*写参数*/ TIM_TimeBaseInit(ADVANCED_TIM, &TIM_TimeBaseInitStruct); /*配置输出比较的参数*/ TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;/*PWM模式一*/ TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;/*主通道使能*/ TIM_OCInitStruct.TIM_OutputNState=TIM_OutputNState_Enable;/*互补通道使能*/ TIM_OCInitStruct.TIM_Pulse=ADVANCED_TIM_CCR;/*占空比*/ TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;/*主通道高电平为有效*/ TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCNPolarity_High;/*互补通道高电平为有效*/ TIM_OCInitStruct.TIM_OCIdleState=TIM_OCIdleState_Reset;/*刹车后的输出状态*/ TIM_OCInitStruct.TIM_OCNIdleState=TIM_OCNIdleState_Reset; /*写参数*/ TIM_OC1Init(ADVANCED_TIM, &TIM_OCInitStruct); TIM_OC1PreloadConfig(ADVANCED_TIM, TIM_OCPreload_Enable); /*配置死区刹车寄存器*/ TIM_BDTRInitStruct.TIM_OSSRState=TIM_OSSRState_Enable; TIM_BDTRInitStruct.TIM_OSSIState=TIM_OSSIState_Enable; TIM_BDTRInitStruct.TIM_LOCKLevel=TIM_LOCKLevel_OFF; TIM_BDTRInitStruct.TIM_DeadTime=7; /*死区时间97ns*/ TIM_BDTRInitStruct.TIM_Break=TIM_Break_Enable;/*使能刹车功能*/ TIM_BDTRInitStruct.TIM_BreakPolarity=TIM_BreakPolarity_High;/*当刹车通道为高电平时停止输出*/ TIM_BDTRInitStruct.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable; TIM_BDTRConfig(ADVANCED_TIM, &TIM_BDTRInitStruct); TIM_Cmd(ADVANCED_TIM, ENABLE); TIM_CtrlPWMOutputs(ADVANCED_TIM, ENABLE); }
这段代码是一个函数,用于配置一个高级定时器(Advanced TIM)。以下是代码的详细解释:
首先,通过 RCC_APB2PeriphClockCmd 函数开启高级定时器的时钟。
接下来,创建一个 TIM_TimeBaseInitStruct 结构体变量,用于配置定时器的基本参数。其中包括预分频因子(TIM_Prescaler)、计数模式(TIM_CounterMode)、周期(TIM_Period)、时钟分频(TIM_ClockDivision)和重复计数器(TIM_RepetitionCounter)。这些参数会影响定时器的计数速度和周期。
然后,通过 TIM_TimeBaseInit 函数将配置写入定时器。
接下来,创建一个 TIM_OCInitStruct 结构体变量,用于配置输出比较参数。包括输出比较模式(TIM_OCMode)、主通道输出使能(TIM_OutputState)、互补通道输出使能(TIM_OutputNState)、占空比(TIM_Pulse)、主通道输出极性(TIM_OCPolarity)、互补通道输出极性(TIM_OCNPolarity)、刹车后的输出状态(TIM_OCIdleState)和互补刹车后的输出状态(TIM_OCNIdleState)。
然后,通过 TIM_OC1Init 函数将配置写入定时器,并通过 TIM_OC1PreloadConfig 函数使能主通道的预装载功能。
接下来,创建一个 TIM_BDTRInitStruct 结构体变量,用于配置死区刹车寄存器的参数。包括死区刹车输出状态(TIM_OSSRState)、死区刹车输入状态(TIM_OSSIState)、锁定级别(TIM_LOCKLevel)、死区时间(TIM_DeadTime)、使能刹车功能(TIM_Break)、刹车通道的极性(TIM_BreakPolarity)和自动输出使能(TIM_AutomaticOutput)。
然后,通过 TIM_BDTRConfig 函数将配置写入定时器。
最后,通过 TIM_Cmd 函数使能定时器,并通过 TIM_CtrlPWMOutputs 函数使能定时器的PWM输出。
这段代码的作用是配置高级定时器的基本参数、输出比较参数和死区刹车寄存器的参数,使得高级定时器能够按照配置的方式进行计数和输出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)