问题描述:最近在做一个项目,需要实现低功耗,需要把stm32主控进入待机模式,然后使用RTC在指定的时间唤醒,多次进入休眠、唤醒之后,会出现刚进入待机模式后,还没有到达指定的唤醒时间,
系统会自动唤醒。开始以为是进入休眠之前,没有清除一些标志位,所以把相关的中断标志位都清除了一遍,例如的:RTC的唤醒中断、闹钟中断等中断标志位都进行清除、以及进入待机之前把systick也关掉;
然而问题依然没有解决。另外,只有在待机模式下出现这样的问题,停止模式都是ok的,思来想去,把自己都搞得有点懵逼了。
几经折腾之后,终于发现了问题,原来是设置了唤醒时钟后,唤醒时钟会一直有效,会出现重复唤醒的现象,所以出现已进入待机模式,唤醒时间到,就会立刻唤醒,所以当从待机模式下唤醒时,需要禁用掉唤醒时钟,包括闹钟也是如此。
当然相关的中断标志位也需要清除一遍。
标签:RTC,中断,模式,休眠,待机,唤醒 From: https://www.cnblogs.com/yangzhaochong/p/16657602.html