Hallo Zusammen, ich habe eine grundsätzliche frage ich versuche ein paar Zeilen Code von STM32F100 auf STM32F4 zu portieren. Im einzelnem kriege ich die Buttons nicht konfiguriert so konfiguriert, dass ich über eine IRQ Routine behandelt werden. bei STM32F100 Habe ich wie folgt die Pins konfiguriert und über exti15_10_irqhandler behandelt. Bei STM32F4 kriege ich einfach nicht hin. vielleicht kann mir jemand einen Tipp geben.
1 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); |
2 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; |
3 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; |
4 | GPIO_Init(GPIOC, &GPIO_InitStructure); |
5 | |
6 | |
7 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); |
8 | |
9 | GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource11); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource12); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); |
10 | |
11 | EXTI_InitStructure.EXTI_Line = EXTI_Line10; |
12 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
13 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
14 | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
15 | EXTI_Init(&EXTI_InitStructure); |
16 | |
17 | EXTI_InitStructure.EXTI_Line = EXTI_Line11; |
18 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
19 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
20 | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
21 | EXTI_Init(&EXTI_InitStructure); |
22 | |
23 | EXTI_InitStructure.EXTI_Line = EXTI_Line12; |
24 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
25 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
26 | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
27 | EXTI_Init(&EXTI_InitStructure); |
28 | |
29 | EXTI_InitStructure.EXTI_Line = EXTI_Line13; |
30 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
31 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
32 | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
33 | EXTI_Init(&EXTI_InitStructure); |
34 | |
35 | NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; |
36 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; |
37 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; |
38 | NVIC_Init(&NVIC_InitStructure); |
Bei STM32F4 Kriege Ich die die ganze geschichte nicht über EXTI15_10_IRQn konfiguriert. das einzige was bis jetzt funktioniert ist
1 | GPIO_InitTypeDef GPIO_InitStructure; |
2 | EXTI_InitTypeDef EXTI_InitStructure; |
3 | NVIC_InitTypeDef NVIC_InitStructure; |
4 | |
5 | /// Enable the BUTTON Clock
|
6 | |
7 | RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOC, ENABLE); |
8 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); |
9 | |
10 | /// Configure Button pin as input
|
11 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; |
12 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; |
13 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; |
14 | GPIO_Init(GPIOC, &GPIO_InitStructure); |
15 | |
16 | //Anbindung mit Interruptgenerator
|
17 | |
18 | /// Connect Button EXTI Line to Button GPIO Pin
|
19 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource4); |
20 | |
21 | /// Connect Button EXTI Line to Button GPIO Pin
|
22 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource3); |
23 | |
24 | |
25 | // Configure Button EXTI line
|
26 | EXTI_InitStructure.EXTI_Line = EXTI_Line4; |
27 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
28 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
29 | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
30 | EXTI_Init(&EXTI_InitStructure); |
31 | |
32 | // Configure Button EXTI line
|
33 | EXTI_InitStructure.EXTI_Line = EXTI_Line3; |
34 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
35 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
36 | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
37 | EXTI_Init(&EXTI_InitStructure); |
38 | |
39 | |
40 | // Enable and set Button EXTI Interrupt to the lowest priority
|
41 | NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; |
42 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; |
43 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; |
44 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; |
45 | NVIC_Init(&NVIC_InitStructure); |
46 | |
47 | // Enable and set Button EXTI Interrupt to the lowest priority
|
48 | NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn; |
49 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; |
50 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; |
51 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; |
52 | NVIC_Init(&NVIC_InitStructure); |