2013-01-24 11:13 AM
2013-01-24 11:26 AM
Forum appears to have eaten, please try again.
2013-01-24 11:37 AM
STM32F051K6 to wake from sleep. Using the NVIC WFI mode example on a STM32F0-Discovery board I implement the function but cant debug because of the SWCLK function that shares this pin. All well and good but in ''release build'' the EXTI interrupt doesn't seem to fire. Do I have to disable SWI somehow? Is this even possible?
Thanks2013-01-24 06:51 PM
Ok attempt number 4: In my final application I have to implement a external interrupt on PA14 of aSTM32F051K6 to wake from sleep. Using theNVIC WFI mode example on a STM32F0-Discovery board I implement the function but cant debug because of the SWCLK function that shares this pin. All well and good but in ''release build'' the EXTI interrupt doesn't seem to fire. Do I have to disable SWI somehow? Is this even possible?
I think the way to disable SWD is to reconfigure the GPIO's off the AF setting, presumably you're setting them up as inputs? As a blind stab, it should probably look like thisvoid EXTI14_Config(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable GPIOA clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* Configure PA14 pin as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* Connect EXTI14 Line to PA14 pin */
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource14);
/* Configure EXTI14 line */
EXTI_InitStructure.EXTI_Line = EXTI_Line14;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/* Enable and set EXTI14 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI4_15_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line14) != RESET)
{
/* Something Something */
/* Clear the EXTI line 14 pending bit */
EXTI_ClearITPendingBit(EXTI_Line14);
}
}
2013-01-24 10:28 PM
Thanks clive1,
That is how I configure the pin and EXTI. Is the sequence of any importance? I have functions that Setup RCC then GPIOs and so on. I'll build a program with just the EXTI config and see where that gets me. Cheers EDIT: After no luck with the EXTI only code I released that it could be switch bounce. Added a RC to my test switch and Bobs my uncle. To recap, setup PIN PA14 for EXTI as you would any other PIN (see clive1's post). This will disable the SWI at run time. A big thanks to clive1 for easing the calm! Cheers2013-02-11 12:18 AM
Will the functionality of EXTI change if pull ups/downs are enabled in the pin configuration? Or will EXTI still function with pull ups/downs? All the examples I've seen don't use pull ups/downs. Is there a reason for that?