热门产品 :
CH634: 4端口USB3.0 HUB控制器芯片
查看: 3294
回复: 5
CH571 GPIO中断,功耗有异常
有时按下电流是这样。
GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeIN_PD); GPIOA_ITModeCfg(GPIO_Pin_14, GPIO_ITMode_RiseEdge); PFIC_EnableIRQ(GPIO_A_IRQn); PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Edge_LongDelay); //PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Edge_ShortDelay); shortDelay 会一直复位。
我的工程开了一个1S的事件,感觉这个外部中断就是有外部中断来了之后,一直需要idle,等待了其他唤醒事件后才运行相应的代码。
如果我删除了
u32 CH57X_LowPower(u32 time) ... // LowPower_Idle();//删除了这段代码,也不会出现等待基本唤醒才运行的 ...
这里是外部中断的函数,帮我看一下有什么问题,为什么中断还是进入了Idle,需要等待到RTC唤醒都退出Idle?
外部唤醒可能因为IO抖动导致进入idle模式。
因为看门狗使用的是fsys分频来的,所以休眠的时候看门狗也会停;
这种情况下,有sleep进入idle模式后,就没法通过外部事件唤醒了,但是RTC因为32K时钟存在,所以你这种情况实际是误触发进idle了,然后只能等RTC唤醒。
然后正常运行代码
代码我只改了2处地方。
初始化外部中断以中断处理函数
配置成低功耗。
你的意思是进入了Idle模式后,是无法外部中断是无法唤醒?
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录