单片机/MCUwilliam hill官网
直播中

陈秀英

7年用户 1225经验值
私信 关注

CY8C4247LQI-BL483使用GPIO中断作为唤醒源将芯片从深度睡眠模式中唤醒,为什么不起作用?

我正在使用 CY8C4247LQI-BL483 处理器。
我正在尝试使用 GPIO 中断作为唤醒源将芯片从深度睡眠模式中唤醒。
当处理器启动时 LED 会切换 10 秒,之后通过 (Switch_Sleep ();) 将开关(数字输入)置于睡眠模式,然后调用函数 cyspmDeepSleep ();然后在芯片进入深度睡眠模式后,我再次通过按下交换机(Switch_Wakeup ();)将其唤醒。
通过查看 Pins 数据表,我已经将中断组件连接到全球信号。


在深度睡眠模式下,当我按下落边缘的开关时,我正在调用自定义中断处理器 (isr_StarTex (Int_Handler);)。在 int_Handler 函数中,首先清除中断,然后调用 LED 开启 2 秒钟。
如果我没看错那之后就会中断。 芯片需要醒来才能完成中断任务,然后恢复 LED 切换 10 秒钟然后进入深度睡眠模式。
但它不起作用。 芯片仍处于深度睡眠模式。
中断在睡眠模式下工作,但在深度睡眠模式下不起作用。
为了测试中断,我尝试在进入深度睡眠状态之前中断芯片并使其正常工作(假设当芯片启动时,LED 切换 10 秒,我按下开关进行中断,然后芯片进入中断 LED 亮起 2 秒,关闭 2 秒,然后恢复切换剩余 6 秒,然后进入深度睡眠模式。)
但是一旦进入深度睡眠模式,它就不会再中断了。
请建议使用 GPIO 中断作为唤醒源将芯片从深度睡眠模式中唤醒的正确方法。

回帖(1)

h1654155216.9102

2024-1-24 16:07:10
在使用CY8C4247LQI-BL483处理器时,确保已正确配置GPIO中断并选择正确的引脚作为中断源。以下是一些可能导致中断无法唤醒芯片的常见问题和解决方法:

1. 确保将中断引脚正确连接到外部触发器或开关。确保引脚与中断线相连,并且触发器或开关的动作可以引发引脚上的中断。

2. 在代码中,确保正确配置GPIO中断。确保已将相关引脚配置为中断模式,并在启用中断之前将中断处理程序注册到中断向量表中。

3. 在中断处理程序中,确保已经清除了中断标志位,以便下次触发中断时能够正确处理。使用`Cy_GPIO_ClearInterrupt`函数清除中断标志位。

4. 在设置深度睡眠模式之前,确保已经禁用了全局中断。使用`Cy_SysLib_EnterCriticalSection`函数禁用中断,并使用`Cy_SysLib_ExitCriticalSection`函数重新启用中断。

5. 确保在进入深度睡眠模式之前已经配置了正确的唤醒源。使用`Cy_SysPm_SetHibernateWakeupSource`函数选择GPIO中断作为唤醒源。

如果以上解决方法都没有起作用,可以尝试使用示波器或逻辑分析仪来检测中断引脚的电平变化,同时确认是否正常触发中断。另外,确保所使用的中断引脚在芯片手册中没有其他功能限制,例如与其他外设冲突等。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分