Hallo Leute,
ich melde mich mal wieder mit folgendem Problem zu Wort:
Derzeit bin ich mit externen Interrupts auf einem STM32F103ZE am
werkeln.
Hintergrund ist, ich möchte auf dem Evalboard einen Interrupt mittels
einer Taste auslösen. Es funktioniert auch soweit. Nur leider Springt
das Programm sobald ich die Taste drücke auf den DEFAULT_ISR_HANDLER
aber nihct in die interrupt routine. Ich hoffe mir kann mal kurz jemand
über meinen Quelltest schauen und mir einen Tip geben (ist alles zum
testen quick and dirty geschrieben!).
1 | void externalInterruptInit()
|
2 | {
|
3 | GPIO_InitTypeDef GPIO_InitStructure;
|
4 | EXTI_InitTypeDef EXTI_InitStructure;
|
5 | NVIC_InitTypeDef NVIC_InitStructure;
|
6 |
|
7 | /* Enable the BUTTON Clock */
|
8 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG | RCC_APB2Periph_AFIO, ENABLE);
|
9 |
|
10 | /* Configure Button pin as input floating */
|
11 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
12 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
|
13 | GPIO_Init(GPIOG, &GPIO_InitStructure);
|
14 |
|
15 |
|
16 | /* Connect Button EXTI Line to Button GPIO Pin */
|
17 | GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource15);
|
18 |
|
19 | /* Configure Button EXTI line */
|
20 | EXTI_InitStructure.EXTI_Line = EXTI_Line15;
|
21 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
22 |
|
23 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
|
24 |
|
25 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
26 | EXTI_Init(&EXTI_InitStructure);
|
27 |
|
28 | /* Enable and set Button EXTI Interrupt to the lowest priority */
|
29 | NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
|
30 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0A;
|
31 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0A;
|
32 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
33 |
|
34 | NVIC_Init(&NVIC_InitStructure);
|
35 | }
|
36 |
|
37 |
|
38 | void EXTI15_10_IRQHandler(void)
|
39 | {
|
40 | unsigned char test;
|
41 | test=1; //leider kommt das programm hier nie vorbei :(
|
42 | };
|
Leider Springt das programm hier her und bleibt dort stehen wenn ich die
taste drücke:
1 | DEFAULT_ISR_HANDLER EXTI15_10_IRQHandler //diese Zeile befindet sich in der STM32F10x_Startup.s
|
Grüße Tarkan :)
PS: laut dissassembly wird die Routine auch nicht wegoptimiert !