Hallo Zusammen,
ich versuche einen Flanken Interrupt auf einem STM32 hinzubekommen und
verwende folgenden Code...
1 | void TC_Init(void)
|
2 | {
|
3 | GPIO_InitTypeDef GPIO_InitStructure;
|
4 |
|
5 | /* Enable GPIOA clock */
|
6 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
7 |
|
8 | /* PA8 Pin als Eingang mit Pullup */
|
9 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
10 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
11 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
|
12 | GPIO_Init(GPIOA, &GPIO_InitStructure);
|
13 |
|
14 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
15 |
|
16 | EXTI_InitTypeDef EXTI_InitStructure;
|
17 |
|
18 | /* EXTI8 PA8 Pin */
|
19 | GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource8);
|
20 | EXTI_InitStructure.EXTI_Line = EXTI_Line8;
|
21 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
22 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
|
23 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
24 | EXTI_Init(&EXTI_InitStructure);
|
25 |
|
26 | NVIC_InitTypeDef NVIC_InitStructure;
|
27 |
|
28 | /* EXTI0 Interrupt low priority */
|
29 | NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
|
30 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
|
31 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
|
32 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
33 | NVIC_Init(&NVIC_InitStructure);
|
34 | }
|
35 |
|
36 | void EXTI9_5_IRQHandler(void)
|
37 | {
|
38 | if(EXTI_GetITStatus(EXTI_Line8) != RESET) {
|
39 |
|
40 | LCDputS ("Hello");
|
41 | /* Clear the EXTI line 8 pending bit */
|
42 | EXTI_ClearITPendingBit(EXTI_Line8);
|
43 | }
|
44 | }
|
Die ISR wird nicht durchlaufen. Was habe ich hier falsch konfiguriert ?
An PIN PA8 sollte bei Flankenwechsel von H -> L ein Interrupt ausgelöst
werden, passiert aber nicht.