Hallo, hier habe ich ein Beispiel für den Cortex M3 F103. Hier wird auf einen externen Interrupt an Pin 0 reagiert. Ich benötige aber Pin 11 an Port B. GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_In_Floating; GPIO_Init(GPIOB,&GPIO_Init_Structure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0 EXTI_InitStructure.EXTI_Mode_Interupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); Was muss ich denn da genau verändern, dass der Interrupt an Port B Pin 11 abgegriffen wird?
Zuerst mal das Referenz Manual, zumindest den Teil EXTI lesen! Ein Blick in die FW-Lib Examples zu EXTI lohnen sich auch... Grob gesagt, überall wo die 0 im Bsp. steht in 11 ändern. Dann auch den richtigen Interrupthandler verwenden.
NVIC_InitStructure.NVIC_IRQChannel = EXTI11_IRQn Gibt es nicht. Was soll ich dafür verwenden?
Gast
#2689821
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
Gast
#2689824
Muss man so machen da es keinen eigenen IR für Linie 11 gibt sondern nur den zusammengefassten 15_10 -> siehe Vektortabelle.
Gast
#2689834
Korrektur: Überall schauen dass selber Name der Struktur existiert, ich verwende immer NVIC / EXTI_InitStruct statt InitStructure, beim zusammenkopieren oben hab sich dadurch unterschiede ergeben.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.