我有两个来自 tim1ch1 和 tim4ch1 的捕获中断,当我仅使用 tim1 ch1 时,我可以使用
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
,但是如果我想同时使用 tim4ch1 中断怎么办?我可以使用以下格式吗?这是否正确?你能警告我一下吗?我将无法尝试它作为软件,所以我想向专业人士询问此类主题。
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
if (htim->Instance == htim1.Instance) {
// to do sth
}
else if (htim->Instance == htim4.Instance) {
// to do sth
}
}
}
这似乎是一种非常奇怪的处理方式。 ISR 告诉您哪个定时器引发了中断。您无需检查结构即可弄清楚。
您可能想要更多类似的东西:
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
if (htim == &htim1)
{
// handle TIM1 interrupts
}
else if (htim == &htim4)
{
// handle TIM4 interrupts
}
}
每个“处理”部分都可以测试哪个通道导致了中断。如果您只启用您关心的中断,则可能无需检查任何内容。
这个想法行不通,因为我们在两个通道上连续检查 pwm 输入,并且根据以前的代码,它只会检查一个条件,不会检查第二个条件,因此它只测量通道输入。如果我错了请纠正我。