STM32F407IGH6 PB6定时器TIM4_CH3 PWM输入捕获频率 基于HAL库
时间: 2024-06-09 19:09:26 浏览: 13
在 STM32F407IGH6 上使用 PB6 作为定时器 TIM4 的通道 3,可以通过 HAL 库实现 PWM 输入捕获功能。以下是基本步骤:
1. 初始化定时器 TIM4 和 GPIO PB6。
```c
TIM_HandleTypeDef htim4;
void TIM4_Init(void)
{
TIM_OC_InitTypeDef sConfigOC = {0};
htim4.Instance = TIM4;
htim4.Init.Prescaler = 0;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
htim4.Init.Period = 65535;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim4);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 32767;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3);
HAL_TIM_IC_Init(&htim4);
}
void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
```
2. 启动定时器 TIM4。
```c
void TIM4_Start(void)
{
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_3);
}
```
3. 实现输入捕获功能的中断处理函数。
```c
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3)
{
uint32_t captureVal = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_3);
float pwmFreq = (float)(HAL_RCC_GetPCLK1Freq()) / ((htim->Instance->PSC + 1) * captureVal);
}
}
```
以上代码实现了 PWM 输入捕获并计算频率的功能。需要注意的是,本例中使用的 PWM 占空比为 50%,因此输入捕获的值应该是 PWM 周期的一半。如果 PWM 占空比不同,需要根据具体情况调整计算方法。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)