]> git.gir.st - tmk_keyboard.git/blob - tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[tmk_keyboard.git] / tool / mbed / mbed-sdk / libraries / tests / mbed / interruptin / main.cpp
1 #include "test_env.h"
2
3 DigitalOut myled(LED1);
4 DigitalOut led2(LED2);
5
6 volatile int checks = 0;
7 void in_handler() {
8 checks++;
9 led2 = !led2;
10 }
11
12 #if defined(TARGET_KL25Z)
13 #define PIN_OUT PTC6
14 #define PIN_IN PTA5
15
16 #elif defined(TARGET_KL05Z)
17 #define PIN_OUT PTB11
18 #define PIN_IN PTB1
19
20 #elif defined(TARGET_LPC812)
21 #define PIN_OUT D10
22 #define PIN_IN D11
23
24 #elif defined(TARGET_LPC1114)
25 #define PIN_OUT dp1
26 #define PIN_IN dp2
27
28 #elif defined(TARGET_LPC1549)
29 // TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial
30 // port pin), D1 is used as USBTX
31 #define PIN_OUT D2
32 #define PIN_IN D7
33
34 #elif defined(TARGET_LPC4088)
35 #define PIN_IN (p11)
36 #define PIN_OUT (p12)
37
38 #elif defined(TARGET_NUCLEO_F030R8) || \
39 defined(TARGET_NUCLEO_F070RB) || \
40 defined(TARGET_NUCLEO_F072RB) || \
41 defined(TARGET_NUCLEO_F091RC) || \
42 defined(TARGET_NUCLEO_F103RB) || \
43 defined(TARGET_NUCLEO_F302R8) || \
44 defined(TARGET_NUCLEO_F303RE) || \
45 defined(TARGET_NUCLEO_F334R8) || \
46 defined(TARGET_NUCLEO_F401RE) || \
47 defined(TARGET_NUCLEO_F411RE) || \
48 defined(TARGET_NUCLEO_L053R8) || \
49 defined(TARGET_NUCLEO_L073RZ) || \
50 defined(TARGET_NUCLEO_L152RE)
51 #define PIN_IN PB_8
52 #define PIN_OUT PC_7
53
54 #elif defined(TARGET_ARCH_MAX) || \
55 defined(TARGET_DISCO_F407VG) || \
56 defined(TARGET_DISCO_F429ZI)|| \
57 defined(TARGET_DISCO_F401VC)
58 #define PIN_OUT PC_12
59 #define PIN_IN PD_0
60
61 #elif defined(TARGET_RZ_A1H)
62 #define PIN_OUT D1
63 #define PIN_IN D5
64
65 #elif defined(TARGET_FF_ARDUINO)
66 #define PIN_OUT D0
67 #define PIN_IN D7
68
69 #elif defined(TARGET_MAXWSNENV)
70 #define PIN_OUT P0_0
71 #define PIN_IN P0_1
72
73 #elif defined(TARGET_MAX32600MBED)
74 #define PIN_OUT P1_0
75 #define PIN_IN P4_7
76
77 #else
78 #define PIN_IN (p5)
79 #define PIN_OUT (p25)
80
81 #endif
82
83 DigitalOut out(PIN_OUT);
84 InterruptIn in(PIN_IN);
85
86 #define IN_OUT_SET out = 1; myled = 1;
87 #define IN_OUT_CLEAR out = 0; myled = 0;
88
89 void flipper() {
90 for (int i = 0; i < 5; i++) {
91 IN_OUT_SET;
92 wait(0.2);
93 IN_OUT_CLEAR;
94 wait(0.2);
95 }
96 }
97
98 int main() {
99 MBED_HOSTTEST_TIMEOUT(15);
100 MBED_HOSTTEST_SELECT(default_auto);
101 MBED_HOSTTEST_DESCRIPTION(InterruptIn);
102 MBED_HOSTTEST_START("MBED_A7");
103
104 IN_OUT_CLEAR;
105 //Test falling edges first
106 in.rise(NULL);
107 in.fall(in_handler);
108 flipper();
109
110 if(checks != 5) {
111 printf("MBED: falling edges test failed: %d\r\n",checks);
112 MBED_HOSTTEST_RESULT(false);
113 }
114
115 //Now test rising edges
116 in.rise(in_handler);
117 in.fall(NULL);
118 flipper();
119
120 if (checks != 10) {
121 printf("MBED: raising edges test failed: %d\r\n", checks);
122 MBED_HOSTTEST_RESULT(false);
123 }
124
125 //Now test switch off edge detection
126 in.rise(NULL);
127 in.fall(NULL);
128 flipper();
129
130 if (checks != 10) {
131 printf("MBED: edge detection switch off test failed: %d\r\n", checks);
132 MBED_HOSTTEST_RESULT(false);
133 }
134
135 //Finally test both
136 in.rise(in_handler);
137 in.fall(in_handler);
138 flipper();
139
140 if (checks != 20) {
141 printf("MBED: Simultaneous rising and falling edges failed: %d\r\n", checks);
142 MBED_HOSTTEST_RESULT(false);
143 }
144
145 MBED_HOSTTEST_RESULT(true);
146 }
Imprint / Impressum