能不能不用函数HAL_NVIC_EnableIRQ(TIM8_CC_IRQn)而直接用函数HAL_TIM_IC_Start_IT()开启捕获中断
时间: 2023-08-07 20:03:07 浏览: 309
可以直接使用函数 `HAL_TIM_IC_Start_IT()` 来开启捕获中断,而不需要使用函数 `HAL_NVIC_EnableIRQ(TIM8_CC_IRQn)`。
`HAL_TIM_IC_Start_IT()` 函数用于启动定时器输入捕获中断,并开启中断服务函数。它会自动配置定时器的相关寄存器,并使能相应的中断标志位。
示例代码如下:
```c
// 配置定时器和输入捕获
TIM_HandleTypeDef htim;
htim.Instance = TIM8;
htim.Init.Prescaler = 0;
htim.Init.CounterMode = TIM_COUNTERMODE_UP;
htim.Init.Period = 65535;
htim.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim.Init.RepetitionCounter = 0;
HAL_TIM_IC_Init(&htim);
// 配置输入捕获通道
TIM_IC_InitTypeDef sConfigIC;
sConfigIC.ICPolarity = TIM_ICPOLARITY_RISING;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
sConfigIC.ICFilter = 0;
HAL_TIM_IC_ConfigChannel(&htim, &sConfigIC, TIM_CHANNEL_1);
// 开启捕获中断
HAL_TIM_IC_Start_IT(&htim, TIM_CHANNEL_1);
```
这样,当定时器的输入捕获事件发生时,将触发相应的中断服务函数。你可以在中断服务函数中处理相关的逻辑。
阅读全文