打印
[其他ST产品]

GPIO 上拉和浮动触发不同的问题

[复制链接]
308|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2024-10-24 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STMS003做个外接中断触发程序,使用PF4脚外接中断源。

void interrupt_Init(void)
{
    GPIO_Init(GPIOF, pf4, GPIO_MODE_IN_PU_IT);

    GPIO_WriteHigh(GPIOF,pf4);  

    EXti_SetExtIntSensitivity(EXTI_PORT_GPIOF, EXTI_SENSITIVITY_LOW_ONLY);  

}

当GPIO_Init函数配置成上拉触发(pull-up触发GPIO_MODE_IN_PU_IT模式)测试时很正常,GPIO_WriteHigh(GPIOF,pf4)能拉高PF4口为高电平,当PF4的引出线触碰到GND后,能够正常下降沿触发一次。测试OK。

但将上拉触发换成浮动触发(folating触发GPIO_MODE_IN_FL_IT模式)时,则GPIO_WriteHigh(GPIOF,pf4)不能拉高PF4口为高电平,PF4脚却一直循环触发着中断。

请问各位大神有建议否?

使用特权

评论回复
沙发
stormwind123| | 2024-11-22 12:23 | 只看该作者
在浮动触发模式(GPIO_MODE_IN_FL_IT)下,PF4脚既没有内部上拉也没有内部下拉电阻。因此,当你尝试通过GPIO_WriteHigh(GPIOF, pf4)将其设置为高电平时,实际上这个操作在浮动模式下是无效的,因为GPIO端口此时处于输入模式,而不是输出模式。在输入模式下,你不能通过写操作来改变引脚的电平状态。

使用特权

评论回复
板凳
flycamelaaa| | 2024-11-22 12:23 | 只看该作者
在浮动模式下,PF4脚的电平状态完全由外部电路决定。如果外部电路存在任何微小的噪声或干扰,或者PF4脚通过某种方式(如空气中的静电、附近的电磁场等)间接地接收到了接地信号,那么它的电平就可能在高低之间波动,从而导致中断的频繁触发。

使用特权

评论回复
地板
powerantone| | 2024-11-22 12:24 | 只看该作者
在浮动模式下,不要尝试通过GPIO_WriteHigh来设置PF4口的电平。相反,你应该让PF4口的电平由外部电路决定。
如果需要在软件中将PF4口设置为一个确定的状态(例如,为了测试或初始化),你可以考虑暂时将PF4口配置为输出模式,设置完电平后再切换回浮动输入模式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1213

主题

5348

帖子

12

粉丝