sleep function at the ending of loop, the loop did not begin intermediate On Thursday, June 20, 2019, Christian Mauderer <l...@c-mauderer.de> wrote:
> On 20/06/2019 13:25, Jython wrote: > > do have service routine, handler can printk log, SLEEPONEXIT is 0 > > So your handler is called? But it seems that the processor wakes up > then. How does the "won't stop sleep mode" look like? > > > > > On Thu, Jun 20, 2019 at 5:19 PM Christian Mauderer <l...@c-mauderer.de > > <mailto:l...@c-mauderer.de>> wrote: > > > > On 20/06/2019 10:57, Jython wrote: > > > a GPIO EXTI line, > > > rtems idle phrase called __wfi, does it make stm32 enter standby > mode? > > > so key can not wake up it from sleep function > > > > Please take a look at the reference manual of your chip. Most likely > > it's "RM0090 Rev 18" but make sure that's the right part number: > > > > https://www.st.com/resource/en/reference_manual/dm00031020.pdf > > > > On page 127 there is a description of "Entering low-power mode": > > > > "Low-power modes are entered by the MCU by executing the WFI > (Wait > > For Interrupt), or WFE (Wait for Event) instructions, or when the > > SLEEPONEXIT bit in the Cortex ®-M4 with FPU System Control > > register is set on Return from ISR." > > > > There is also a description for "Exiting low-power mode". For WFI > "any > > peripheral interrupt acknowledged by the NVIC can wake up the > device." > > So your interrupt has to be set up. > > > > Your code seems to enable the interrupt. But have you registered a > > interrupt service routine? Otherwise you might get problems with an > > unhandled interrupt on wakeup. > > > > I only skimmed through the power controller chapter. But it seems > that > > if you have SLEEPDEEP bit set, you will enter a deeper sleep mode > > where peripheral clocks can be disabled. In that state it's possible > > that only special pins (like the WKUP) can wake up the processor > > again. Please have a detailed look at that chapter to find out all > > traps. > > > > Best regards > > > > Christian > > > > > > > > > > > void keys_init() > > > { > > > // config gpio > > > stm32f4_gpio_set_config(&io_key1); // PA12 > > > stm32f4_gpio_set_config(&io_key2); > > > stm32f4_gpio_set_config(&io_key3); > > > stm32f4_gpio_set_config(&io_key4); > > > > > > > > > // SYSCFGEN and exit map > > > (*(uint32_t*)0x40023844) |= 1<<14; > > > > > > SYSCFG_EXTICR3 = 0; > > > SYSCFG_EXTICR4 = 0; > > > > > > > > > > > > // EXIT INIT > > > EXTI_IMR |= (1<<12); > > > EXTI_RTSR |= (1<<12); > > > > > > EXTI_IMR |= (1<<11); > > > EXTI_RTSR |= (1<<11); > > > > > > EXTI_IMR |= (1<<10); > > > EXTI_RTSR |= (1<<10); > > > > > > EXTI_IMR |= (1<<9); > > > EXTI_RTSR |= (1<<9); > > > > > > > > > //NVIC_Init > > > //NVIC it group2 > > > > > > SCB_AIRCR = 0x05FA0000 | 0x500; > > > // ip Interrupt priority register x > > > > > > //(*(volatile uint8_t*)0xE000E417) = 0xe0; //23 > > > //(*(volatile uint8_t*)0xE000E428) = 0xe0; // 40 > > > (*(volatile uint8_t*)0xE000E417) = 0x50; //23 > > > (*(volatile uint8_t*)0xE000E428) = 0x50; // 40 > > > > > > > > > > > > // 23 40 Interrupt set-enable register x (NVIC_ISERx) > > > // nvic enable interrupter number > > > // 0xE000E100 > > > (*(volatile uint32_t*)0xE000E100) |= (1<<23); > > > (*(volatile uint32_t *)0xE000E104) |= (1<< (40%32)); > > > } > > > > > > > > > On Thu, Jun 20, 2019 at 4:05 PM Christian Mauderer > > <l...@c-mauderer.de <mailto:l...@c-mauderer.de> > > > <mailto:l...@c-mauderer.de <mailto:l...@c-mauderer.de>>> wrote: > > > > > > On 20/06/2019 05:28, Jython wrote: > > > > hi, it seems that exit key interrupt won't stop sleep mode, > why? > > > > > > > > [...] > > > > > > > > > > What do you mean by "exit key interrupt"? I don't know the > > STM32F4 that > > > well. So please give some more details. > > > > > > I would expect that either only specific interrupt sources can > > wake up > > > the processor from a deep sleep mode or that you can configure > > which > > > peripherals are still active. If your "exit key" is a GPIO > > line with > > > interrupt capability you should have a look at whether the > > module is > > > still active. > > > > > > Best regards > > > > > > Christian > > > > > > _______________________________________________ > > > users mailing list > > > users@rtems.org <mailto:users@rtems.org> > > <mailto:users@rtems.org <mailto:users@rtems.org>> > > > http://lists.rtems.org/mailman/listinfo/users > > > > > > >
_______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users