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 捕获中断处理程序。为什么会出现这中情况?
需要将捕获接口设置下拉或上拉,悬空什么都有可能 PA8悬空时很容易受到电磁干扰,电平不稳定,导致误触发中断。可以试试在PA8上加一个上拉电阻稳定电平。 输入引脚悬空时可能会形成“天线效应”,接收到周围的电磁噪声,尤其是在工业环境或靠近电机、电源模块时更明显。 STM32的GPIO默认是浮空输入模式,如果没配置成上拉/下拉,悬空状态下电平很容易抖动。建议将PA8配置成上拉输入。 如果你的输入信号幅度较低,建议调整TIM_ICInitStructure.TIM_ICFilter的值,增大滤波窗口,减少误触发。 你检查过TIM_ICPolarity的配置吗?如果信号线浮动且极性设为下降沿触发,可能更容易产生误中断。 试试在PA8引脚上并联一个小电容(如10nF~100nF),能有效滤除高频噪声,减少干扰带来的误触发。 如果环境干扰严重,可以考虑使用屏蔽线来传输信号,并将屏蔽层接地,提升抗干扰能力。 除了硬件优化,软件上也可以在中断回调里加个消抖逻辑,例如检查一定时间内信号是否稳定。 STM32F103的输入捕获对噪声较敏感,检查PCB布局时尽量让PA8远离高频信号或电源走线。 如果PA8必须悬空,建议将其默认电平拉至高电平,并在捕获时主动将信号拉低触发中断,避免干扰误触发。
页:
[1]