1 | void init_exti()
|
2 | {
|
3 |
|
4 | GPIO_InitTypeDef GPIO_InitStructure;
|
5 | EXTI_InitTypeDef EXTI_InitStructure;
|
6 | NVIC_InitTypeDef NVIC_InitStructure;
|
7 |
|
8 | /// Enable the BUTTON Clock
|
9 | RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOC, ENABLE);
|
10 |
|
11 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
|
12 |
|
13 |
|
14 |
|
15 | /// Configure Button pin as input
|
16 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
17 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
18 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
|
19 | GPIO_Init(GPIOC, &GPIO_InitStructure);
|
20 |
|
21 | //Anbindung mit Interruptgenerator
|
22 |
|
23 | /// Connect Button EXTI Line to Button GPIO Pin
|
24 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource11);
|
25 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource12);
|
26 |
|
27 |
|
28 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource13);
|
29 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource14);
|
30 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource15);
|
31 |
|
32 |
|
33 | // Configure Button EXTI line
|
34 | EXTI_InitStructure.EXTI_Line = EXTI_Line11;
|
35 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
36 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
37 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
38 | EXTI_Init(&EXTI_InitStructure);
|
39 |
|
40 | // Configure Button EXTI line
|
41 | EXTI_InitStructure.EXTI_Line = EXTI_Line12;
|
42 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
43 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
44 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
45 | EXTI_Init(&EXTI_InitStructure);
|
46 |
|
47 | // Configure Button EXTI line
|
48 | EXTI_InitStructure.EXTI_Line = EXTI_Line13;
|
49 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
50 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
51 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
52 |
|
53 | // Configure Button EXTI line
|
54 | EXTI_InitStructure.EXTI_Line = EXTI_Line14;
|
55 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
56 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
57 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
58 |
|
59 | // Configure Button EXTI line
|
60 | EXTI_InitStructure.EXTI_Line = EXTI_Line15;
|
61 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
62 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
63 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
64 |
|
65 |
|
66 | NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
|
67 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
|
68 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
|
69 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
70 |
|
71 | NVIC_Init(&NVIC_InitStructure);
|
72 |
|
73 |
|
74 | }
|
75 |
|
76 |
|
77 |
|
78 |
|
79 | void EXTI15_10_IRQHandler()
|
80 | {
|
81 | GPIOE->BSRRL=0xFFFF;
|
82 |
|
83 |
|
84 | //Manü Links / Wert--
|
85 | if (EXTI->PR & (1<<10)) { // EXTI13 interrupt pending?
|
86 | EXTI_ClearITPendingBit(EXTI_Line10); // clear pending interrupt
|
87 | GPIOE->BSRRL=0xFFFF;
|
88 |
|
89 | }
|
90 |
|
91 | //Manü Links / Wert++
|
92 | if (EXTI->PR & (1<<11)) { // EXTI13 interrupt pending?
|
93 | EXTI_ClearITPendingBit(EXTI_Line11); // clear pending interrupt
|
94 | GPIOE->BSRRL=0x00FF;
|
95 |
|
96 |
|
97 | }
|
98 |
|
99 |
|
100 | if (EXTI->PR & (1<<12)) { // EXTI13 interrupt pending?
|
101 | EXTI_ClearITPendingBit(EXTI_Line12); // clear pending interrupt
|
102 | GPIOE->BSRRL=0xFFFF;
|
103 | }
|
104 |
|
105 | if (EXTI->PR & (1<<13)) { // EXTI13 interrupt pending?
|
106 | EXTI_ClearITPendingBit(EXTI_Line13); // clear pending interrupt
|
107 | GPIOE->BSRRL=0xFFFF;
|
108 |
|
109 | }
|
110 |
|
111 | if (EXTI->PR & (1<<14)) { // EXTI13 interrupt pending?
|
112 | EXTI_ClearITPendingBit(EXTI_Line13); // clear pending interrupt
|
113 | GPIOE->BSRRL=0xFFFF;
|
114 |
|
115 | }
|
116 |
|
117 | if (EXTI->PR & (1<<14)) { // EXTI13 interrupt pending?
|
118 | EXTI_ClearITPendingBit(EXTI_Line13); // clear pending interrupt
|
119 | GPIOE->BSRRL=0xFFFF;
|
120 |
|
121 | }
|
122 |
|
123 |
|
124 |
|
125 | //EXTI_GetITStatus()
|
126 |
|
127 |
|
128 |
|
129 |
|
130 | }
|