[其他ST产品] 在STM32外部中断中设置GPIO口点灯,灯有微弱的闪烁,但达不到预期的效果

[复制链接]
1538|14
 楼主| cr315 发表于 2024-5-9 11:00 | 显示全部楼层 |阅读模式
中断代码如下
void EXTI1_IRQHandler(void)
{
Delay_ms(10);
if(EXTI_GetITStatus(EXTI_Line1) == SET)
{
if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5) == SET)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
}
if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5) == RESET)
{
GPIO_SetBits(GPIOA, GPIO_Pin_5);
}
}
EXTI_ClearITPendingBit(EXTI_Line1);
}
其他地方应该没有问题,如果把中断函数中的代码换成一个简单的让GPIO口输出低电平LED是可以点亮的,但换成这样LED每当按键按下后只会有轻微的闪烁。
完全小白,望解惑。感激

一秒落纱 发表于 2024-6-19 11:47 | 显示全部楼层
在STM32外部中断中设置GPIO口点灯时,如果灯出现微弱的闪烁,可能是中断处理时间过长
夜阑风雨 发表于 2024-6-19 14:00 | 显示全部楼层
如果中断服务程序(ISR)执行时间过长,可能会导致系统无法及时响应其他中断或主循环,从而影响GPIO口的稳定输出。确保中断服务程序尽可能简洁高效。
光辉梦境 发表于 2024-6-19 16:00 | 显示全部楼层
如果外部中断的优先级设置得不够高,可能会被其他中断抢占,导致GPIO口的状态变化不稳定。检查并正确设置中断优先级。
淡漠安然 发表于 2024-6-19 18:00 | 显示全部楼层
STM32的系统时钟如果不稳定,可能会影响定时器的精度和GPIO口的输出频率。确保系统时钟配置正确。
远山寻你 发表于 2024-6-19 20:00 | 显示全部楼层
检查GPIO口的配置是否正确,包括GPIO的模式(推挽输出、开漏输出等)、速度等参数。
三生万物 发表于 2024-6-19 22:00 | 显示全部楼层
如果在ISR中使用了软件延时,可能会因为处理器负载的变化而导致延时不准确,从而影响GPIO口的输出。尽量使用硬件定时器来控制延时。
江河千里 发表于 2024-6-20 02:00 | 显示全部楼层
如果电源不稳定或者电源噪声较大,可能会导致GPIO口输出不稳定。检查电源是否符合要求。
冰春彩落下 发表于 2024-6-20 06:00 | 显示全部楼层
检查电路连接是否正确,LED灯和限流电阻是否选择合适,以及是否有其他硬件故障。
别乱了阵脚 发表于 2024-6-20 11:00 | 显示全部楼层
建议使用逻辑分析仪来观察GPIO口的实际输出波形,或者使用示波器来检查电源的稳定性。
暖了夏天蓝了海 发表于 2024-6-20 15:00 | 显示全部楼层
是不是调用中断比较频繁比较快导致的?
小小蚂蚁举千斤 发表于 2024-6-23 17:32 | 显示全部楼层
轻微闪烁其实还是跟程序逻辑有问题的
AdaMaYun 发表于 2024-6-24 23:01 | 显示全部楼层
把中断函数中的代码换成一个简单的让GPIO口输出低电平LED是可以点亮的
LOVEEVER 发表于 2024-6-25 19:44 | 显示全部楼层
STM32外部中断中设置GPIO口点灯,还得看程序
wang6623 发表于 2024-6-30 15:01 | 显示全部楼层
避免直接在中断中使用延迟函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1466

主题

4964

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部