如下图
我在这里 配置GPIO [PB-22 作为按键]唤醒, 功耗就会增加 2.5mA , 猜测应该是使能了 GPIO的时钟 ,
如果用扫描的方式 100us 也会增加很多(约100-200uA) 时钟再长,功耗能 降下去,但响应不及时
这个如何解决?
如下图
我在这里 配置GPIO [PB-22 作为按键]唤醒, 功耗就会增加 2.5mA , 猜测应该是使能了 GPIO的时钟 ,
如果用扫描的方式 100us 也会增加很多(约100-200uA) 时钟再长,功耗能 降下去,但响应不及时
这个如何解决?
你好,ch57x系列mcu是不支持pb22作为唤醒引脚功能的,目前支持唤醒的引脚有pa0~pa15以及pb0~pb15。睡眠唤醒的demo可以参考ch573evt中pm例程。ch573evt可以去官网下载。
噢 好的 ,谢谢。
这个有没有具体资料支持 比如刚刚这种,设计时候的注意事项之类的
最新的ch573的datasheet中(v1.7,p38),CH571/CH573已经支持 所有IO的睡眠唤醒功能,
PB22 作为睡眠唤醒 可按照下面方式:
//初始化 void gpio_init(){ //初始化位输入上拉 GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU); //开启下降沿中断,这个需要保证 //for ch571/ch573 R16_PB_INT_EN bit8 bit9 mapping to PB22,PB23 GPIOB_ITModeCfg(GPIO_Pin_8,GPIO_ITMode_FallEdge); //开启GPIO睡眠唤醒,这里必须使用 Edge_LongDelay PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE,Edge_LongDelay ); //开启GPIO中断 PFIC_EnableIRQ(GPIO_B_IRQn); } //中断服务程序 __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void GPIOB_IRQHandler(void){ GPIOB_ClearITFlagBit(GPIO_Pin_22); //这个打印可能会乱码,在开启休眠后 PRINT("gpio interrupt\r\n"); }
另外注意事项:
对于下降沿或者低电平唤醒,在进入休眠时候必须保证 对应的IO是高电平,否则电流会比较大,mA级
对于上升沿或者高电平唤醒,在进入休眠时候必须保证 对应的IO是低电平,否则电流会比较大,mA级
感谢 我知道原因了。 就是
我是 上拉 高电平, 我给的中断是 上升沿【按键抬起中断】, 所以导致的。
我按下按键的时候发现功耗降下去了, 才看到你的回复 。
谢谢!