1 | void initInputs(void)
|
2 | {
|
3 | GPIO_InitTypeDef io;
|
4 |
|
5 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOF, ENABLE);
|
6 |
|
7 | io.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
|
8 | io.GPIO_OType = GPIO_OType_PP;
|
9 | io.GPIO_PuPd = GPIO_PuPd_DOWN;
|
10 | io.GPIO_Mode = GPIO_Mode_IN;
|
11 | io.GPIO_Speed = GPIO_Speed_2MHz;
|
12 | GPIO_Init(GPIOA,&io);
|
13 |
|
14 | io.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
|
15 | io.GPIO_OType = GPIO_OType_PP;
|
16 | io.GPIO_PuPd = GPIO_PuPd_DOWN;
|
17 | io.GPIO_Mode = GPIO_Mode_IN;
|
18 | io.GPIO_Speed = GPIO_Speed_2MHz;
|
19 | GPIO_Init(GPIOF,&io);
|
20 | }
|
21 |
|
22 | void initEXIT(void)
|
23 | {
|
24 | EXTI_InitTypeDef EXTI_InitStructure;
|
25 | NVIC_InitTypeDef NVIC_InitStructure;
|
26 |
|
27 | /* Enable SYSCFG clock */
|
28 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
|
29 |
|
30 | /* Connect EXTI0 Line to PA0 pin */
|
31 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
|
32 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);
|
33 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource2);
|
34 |
|
35 | /* Configure EXTI0 line */
|
36 | EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1 | EXTI_Line2;
|
37 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
38 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
39 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
40 | EXTI_Init(&EXTI_InitStructure);
|
41 |
|
42 | /* Connect EXTI0 Line to PA0 pin */
|
43 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource0);
|
44 | SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource1);
|
45 |
|
46 | /* Configure EXTI0 line */
|
47 | EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1;
|
48 | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
49 | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
50 | EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
51 | EXTI_Init(&EXTI_InitStructure);
|
52 |
|
53 | /* Enable and set Button EXTI Interrupt to the lowest priority */
|
54 | NVIC_InitStructure.NVIC_IRQChannel = EXTI0_1_IRQn;
|
55 | NVIC_InitStructure.NVIC_IRQChannelPriority = 0x03;
|
56 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
57 |
|
58 | NVIC_Init(&NVIC_InitStructure);
|
59 |
|
60 | NVIC_InitStructure.NVIC_IRQChannel = EXTI2_3_IRQn;
|
61 | NVIC_InitStructure.NVIC_IRQChannelPriority = 0x03;
|
62 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
63 |
|
64 | NVIC_Init(&NVIC_InitStructure);
|
65 |
|
66 | }
|
67 |
|
68 | void EXTI0_1_IRQHandler(void)
|
69 | {
|
70 | if(EXTI_GetITStatus(EXTI_Line0) != RESET)
|
71 | {
|
72 | /* Clear the USER Button EXTI line pending bit */
|
73 | EXTI_ClearITPendingBit(EXTI_Line0);
|
74 | }
|
75 | if(EXTI_GetITStatus(EXTI_Line1) != RESET)
|
76 | {
|
77 | /* Clear the USER Button EXTI line pending bit */
|
78 | EXTI_ClearITPendingBit(EXTI_Line1);
|
79 | }
|
80 | }
|
81 |
|
82 | void EXTI2_3_IRQHandler(void)
|
83 | {
|
84 | if(EXTI_GetITStatus(EXTI_Line2) != RESET)
|
85 | {
|
86 | /* Clear the USER Button EXTI line pending bit */
|
87 | EXTI_ClearITPendingBit(EXTI_Line2);
|
88 | }
|
89 | if(EXTI_GetITStatus(EXTI_Line3) != RESET)
|
90 | {
|
91 | /* Clear the USER Button EXTI line pending bit */
|
92 | EXTI_ClearITPendingBit(EXTI_Line3);
|
93 | }
|
94 | }
|