小库里 发表于 2025-3-6 09:00

STM32F103RBT6飞线悬空触发输入捕获中断

我用STM32F103RBT6想要实现定时器1d输入捕获功能代码如下
/*/*/*/*/*/*/*/*/*/*/*/*/*/*/   
TIM_ICInitTypeDefTIM_ICInitStructure;   
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;   
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;   
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;   
IM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;   
TIM_ICInitStructure.TIM_ICFilter = 0xf;   
TIM_ICInit(TIM1, &TIM_ICInitStructure);   
/* Enable the CC1 Interrupt Request */   
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);   
/* TIM1 enable counter */   
TIM_Cmd(TIM1, ENABLE);
/*/*/*/*/*/*/*/*/*/*/*/*/*/*/
中断配置如下
/*/*/*/*/*/*/*/*/*/*/*/*/*/*/   
NVIC_InitTypeDef NVIC_InitStructure;   
/* Enable the TIM1 global Interrupt */   
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;   
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;   
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
NVIC_Init(&NVIC_InitStructure);
/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


存在的问题是每次我将PA.8(该引脚内部连接到TIM1-CH1)与一根飞线连接时,飞线悬空啥都不接,
都会触发TIM1 捕获中断处理程序。为什么会出现这中情况?



iwjj1985 发表于 2025-3-7 16:12

需要将捕获接口设置下拉或上拉,悬空什么都有可能

公羊子丹 发表于 2025-3-12 08:14

PA8悬空时很容易受到电磁干扰,电平不稳定,导致误触发中断。可以试试在PA8上加一个上拉电阻稳定电平。

周半梅 发表于 2025-3-12 08:15

输入引脚悬空时可能会形成“天线效应”,接收到周围的电磁噪声,尤其是在工业环境或靠近电机、电源模块时更明显。

帛灿灿 发表于 2025-3-12 08:17

STM32的GPIO默认是浮空输入模式,如果没配置成上拉/下拉,悬空状态下电平很容易抖动。建议将PA8配置成上拉输入。

童雨竹 发表于 2025-3-12 08:18

如果你的输入信号幅度较低,建议调整TIM_ICInitStructure.TIM_ICFilter的值,增大滤波窗口,减少误触发。

万图 发表于 2025-3-12 08:19

你检查过TIM_ICPolarity的配置吗?如果信号线浮动且极性设为下降沿触发,可能更容易产生误中断。

Wordsworth 发表于 2025-3-12 08:20

试试在PA8引脚上并联一个小电容(如10nF~100nF),能有效滤除高频噪声,减少干扰带来的误触发。

Bblythe 发表于 2025-3-12 08:22

如果环境干扰严重,可以考虑使用屏蔽线来传输信号,并将屏蔽层接地,提升抗干扰能力。

Pulitzer 发表于 2025-3-12 08:23

除了硬件优化,软件上也可以在中断回调里加个消抖逻辑,例如检查一定时间内信号是否稳定。

Uriah 发表于 2025-3-12 08:24

STM32F103的输入捕获对噪声较敏感,检查PCB布局时尽量让PA8远离高频信号或电源走线。

Clyde011 发表于 2025-3-12 08:25

如果PA8必须悬空,建议将其默认电平拉至高电平,并在捕获时主动将信号拉低触发中断,避免干扰误触发。
页: [1]
查看完整版本: STM32F103RBT6飞线悬空触发输入捕获中断