dhgdh

Dependencies:   MAX44000 PWM_Tone_Library nexpaq_mdk

Fork of LED_Demo by joey shelton

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "test_env.h"
00002 
00003 #if !DEVICE_INTERRUPTIN
00004   #error [NOT_SUPPORTED] InterruptIn is not supported
00005 #endif
00006 
00007 DigitalOut myled(LED1);
00008 DigitalOut led2(LED2);
00009 
00010 volatile int checks = 0;
00011 void in_handler() {
00012     checks++;
00013     led2 = !led2;
00014 }
00015 
00016 #if defined(TARGET_KL25Z)
00017 #define PIN_OUT     PTC6
00018 #define PIN_IN      PTA5
00019 
00020 #elif defined(TARGET_KL05Z)
00021 #define PIN_OUT     PTB11
00022 #define PIN_IN      PTB1
00023 
00024 #elif defined(TARGET_LPC812)
00025 #define PIN_OUT     D10
00026 #define PIN_IN      D11
00027 
00028 #elif defined(TARGET_LPC1114)
00029 #define PIN_OUT     dp1
00030 #define PIN_IN      dp2
00031 
00032 #elif defined(TARGET_LPC1549)
00033 // TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial
00034 // port pin), D1 is used as USBTX
00035 #define PIN_OUT     D2
00036 #define PIN_IN      D7
00037 
00038 #elif defined(TARGET_LPC4088)
00039 #define PIN_IN      (p11)
00040 #define PIN_OUT     (p12)
00041 
00042 #elif defined(TARGET_NUCLEO_F030R8) || \
00043       defined(TARGET_NUCLEO_F070RB) || \
00044       defined(TARGET_NUCLEO_F072RB) || \
00045       defined(TARGET_NUCLEO_F091RC) || \
00046       defined(TARGET_NUCLEO_F103RB) || \
00047       defined(TARGET_NUCLEO_F302R8) || \
00048       defined(TARGET_NUCLEO_F303RE) || \
00049       defined(TARGET_NUCLEO_F334R8) || \
00050       defined(TARGET_NUCLEO_F401RE) || \
00051       defined(TARGET_NUCLEO_F410RB) || \
00052       defined(TARGET_NUCLEO_F411RE) || \
00053       defined(TARGET_NUCLEO_F429ZI) || \
00054       defined(TARGET_NUCLEO_F446RE) || \
00055       defined(TARGET_NUCLEO_F446ZE) || \
00056       defined(TARGET_NUCLEO_L053R8) || \
00057       defined(TARGET_NUCLEO_L073RZ) || \
00058       defined(TARGET_NUCLEO_L152RE)
00059 #define PIN_IN      PB_8
00060 #define PIN_OUT     PC_7
00061 
00062 #elif defined(TARGET_NUCLEO_F031K6) || \
00063       defined(TARGET_NUCLEO_F042K6) || \
00064       defined(TARGET_NUCLEO_L011K4) || \
00065       defined(TARGET_NUCLEO_L031K6)
00066 #define PIN_IN      A4
00067 #define PIN_OUT     A5
00068 
00069 #elif defined(TARGET_ARCH_MAX) || \
00070       defined(TARGET_DISCO_F407VG) || \
00071       defined(TARGET_DISCO_F429ZI)|| \
00072       defined(TARGET_DISCO_F401VC)
00073 #define PIN_OUT    PC_12
00074 #define PIN_IN     PD_0
00075 
00076 #elif defined(TARGET_RZ_A1H)
00077 #define PIN_OUT    D1
00078 #define PIN_IN     D5
00079 
00080 #elif defined(TARGET_VK_RZ_A1H)
00081 #define PIN_OUT    P3_2
00082 #define PIN_IN     P5_6
00083 
00084 #elif defined(TARGET_FF_ARDUINO)
00085 #define PIN_OUT    D0
00086 #define PIN_IN     D7
00087 
00088 #elif defined(TARGET_MAXWSNENV)
00089 #define PIN_OUT    P0_0
00090 #define PIN_IN     P0_1
00091 
00092 #elif defined(TARGET_MAX32600MBED)
00093 #define PIN_OUT    P1_0
00094 #define PIN_IN     P4_7
00095 
00096 #elif defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32GG_STK3700) || defined(TARGET_EFM32WG_STK3800)
00097 #define PIN_OUT    PD0
00098 #define PIN_IN     PC3
00099 
00100 #elif defined(TARGET_EFM32ZG_STK3200)
00101 #define PIN_OUT    PD7
00102 #define PIN_IN     PC1
00103 
00104 #elif defined(TARGET_EFM32HG_STK3400)
00105 #define PIN_OUT    PE10
00106 #define PIN_IN     PC1
00107 
00108 #elif defined(TARGET_EFM32PG_STK3401)
00109 #define PIN_OUT    PC6
00110 #define PIN_IN     PA3
00111 
00112 #elif defined(TARGET_SAMR21G18A) || defined(TARGET_SAMD21J18A) || defined(TARGET_SAMD21G18A)
00113 #define PIN_OUT    PB02
00114 #define PIN_IN     PB03
00115 
00116 #elif defined(TARGET_SAML21J18A)
00117 #define PIN_OUT    PA02
00118 #define PIN_IN     PA03
00119 
00120 #elif defined(TARGET_SAMG55J19)
00121 #define PIN_OUT    PA13
00122 #define PIN_IN     PB13
00123 
00124 #else
00125 #define PIN_IN      (p5)
00126 #define PIN_OUT     (p25)
00127 
00128 #endif
00129 
00130 DigitalOut out(PIN_OUT);
00131 InterruptIn in(PIN_IN);
00132 
00133 #define IN_OUT_SET      out = 1; myled = 1;
00134 #define IN_OUT_CLEAR    out = 0; myled = 0;
00135 
00136 void flipper() {
00137     for (int i = 0; i < 5; i++) {
00138         IN_OUT_SET;
00139         wait(0.2);
00140         IN_OUT_CLEAR;
00141         wait(0.2);
00142     }
00143 }
00144 
00145 int main() {
00146     MBED_HOSTTEST_TIMEOUT(15);
00147     MBED_HOSTTEST_SELECT(default_auto);
00148     MBED_HOSTTEST_DESCRIPTION(InterruptIn);
00149     MBED_HOSTTEST_START("MBED_A7");
00150 
00151     IN_OUT_CLEAR;
00152     //Test falling edges first
00153     in.rise(NULL);
00154     in.fall(in_handler);
00155     flipper();
00156 
00157     if(checks != 5) {
00158         printf("MBED: falling edges test failed: %d\r\n",checks);
00159         MBED_HOSTTEST_RESULT(false);
00160     }
00161 
00162     //Now test rising edges
00163     in.rise(in_handler);
00164     in.fall(NULL);
00165     flipper();
00166 
00167     if (checks != 10) {
00168         printf("MBED: raising edges test failed: %d\r\n", checks);
00169         MBED_HOSTTEST_RESULT(false);
00170     }
00171 
00172     //Now test switch off edge detection
00173     in.rise(NULL);
00174     in.fall(NULL);
00175     flipper();
00176 
00177     if (checks != 10) {
00178         printf("MBED: edge detection switch off test failed: %d\r\n", checks);
00179         MBED_HOSTTEST_RESULT(false);
00180     }
00181 
00182     //Finally test both
00183     in.rise(in_handler);
00184     in.fall(in_handler);
00185     flipper();
00186 
00187     if (checks != 20) {
00188         printf("MBED: Simultaneous rising and falling edges failed: %d\r\n", checks);
00189         MBED_HOSTTEST_RESULT(false);
00190     }
00191 
00192     MBED_HOSTTEST_RESULT(true);
00193 }