c - stm32 WFI not triggering -


i using stm32l151 (cortex-m3) , configuring external interrupt on gpio pin:

/* enable clocks */     rcc_apb2periphclockcmd(rcc_apb2periph_syscfg, enable);     rcc_apb1periphclockcmd(rcc_apb1periph_spi3, enable);     rcc_ahbperiphclockcmd(rcc_ahbperiph_gpioa, enable);     rcc_ahbperiphclockcmd(rcc_ahbperiph_gpiob, enable);     rcc_ahbperiphclockcmd(rcc_ahbperiph_gpioc, enable);     rcc_apb2periphclockcmd(rcc_apb2periph_tim9, enable);  /* extint input */ gpio_inittypedef gpio_initstr; gpio_initstr.gpio_speed = gpio_speed_40mhz; gpio_initstr.gpio_mode = gpio_mode_in; gpio_initstr.gpio_pupd  = gpio_pupd_down; gpio_initstr.gpio_pin = gpio_pin_13; gpio_init(gpioc, &gpio_initstr);  /* interrupts on extint */ syscfg_extilineconfig(exti_portsourcegpioc, exti_pinsource13); exti_inittypedef extiinitstr = {exti_line13, exti_mode_interrupt, exti_trigger_rising, enable}; exti_init(&extiinitstr); nvic_inittypedef nvicinitstr = {exti15_10_irqn, 0, 0, enable}; nvic_init(&nvicinitstr); 

my main.c reaches point have:

    __enable_irq(); //...program related code..     __asm volatile ("wfi"); 

at point, processor not wake external pin going high. if replace wfi line instead

while(1); 

the interrupt triggered properly. tried follow examples did not find different. (i use st-link/v2 debugger, gnu tools arm embedded processors toolchain & eclipse plug-ins, gdb , openocd, if matters)

grateful hints!

my problem solved decreasing pll speed. config is:

/* hclk = sysclk /1*/ rcc->cfgr |= (uint32_t)rcc_cfgr_hpre_div1;  /* pclk2 = hclk /1*/ rcc->cfgr |= (uint32_t)rcc_cfgr_ppre2_div1;  /* pclk1 = hclk /1*/ rcc->cfgr |= (uint32_t)rcc_cfgr_ppre1_div1;  /*  pll configuration */ rcc->cfgr &= (uint32_t)((uint32_t)~(rcc_cfgr_pllsrc | rcc_cfgr_pllmul |                                     rcc_cfgr_plldiv)); rcc->cfgr |= (uint32_t)(rcc_cfgr_pllsrc_hsi | rcc_cfgr_pllmul6 | rcc_cfgr_plldiv3); 

and verify problem fixed when replace rcc_cfgr_pllmul6 rcc_cfgr_pllmul3. cannot explain this, don't know if related debugger speed or else.


Comments