mirror of https://github.com/ARMmbed/mbed-os.git
252 lines
6.1 KiB
C++
252 lines
6.1 KiB
C++
#include "test_env.h"
|
|
|
|
#if !DEVICE_PORTINOUT
|
|
#error [NOT_SUPPORTED] PortInOut is not supported
|
|
#endif
|
|
|
|
#if defined(TARGET_K64F)
|
|
#define P1_1 (1 << 16)
|
|
#define P1_2 (1 << 17)
|
|
#define PORT_1 PortC
|
|
|
|
#define P2_1 (1 << 2)
|
|
#define P2_2 (1 << 3)
|
|
#define PORT_2 PortC
|
|
|
|
#elif defined(TARGET_K66F)
|
|
#define P1_1 (1 << 3)
|
|
#define P1_2 (1 << 4)
|
|
#define PORT_1 PortC
|
|
|
|
#define P2_1 (1 << 5)
|
|
#define P2_2 (1 << 2)
|
|
#define PORT_2 PortC
|
|
|
|
#elif defined(TARGET_LPC11U24)
|
|
#define P1_1 (1 << 9) // p0.9
|
|
#define P1_2 (1 << 8) // p0.8
|
|
#define PORT_1 Port0
|
|
|
|
#define P2_1 (1 << 24) // p1.24
|
|
#define P2_2 (1 << 25) // p1.25
|
|
#define PORT_2 Port1
|
|
|
|
#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
|
|
#define P1_1 (1 << 9) // p0.9 -> p5
|
|
#define P1_2 (1 << 8) // p0.8 -> p6
|
|
#define PORT_1 Port0
|
|
|
|
#define P2_1 (1 << 1) // p2.1 -> p25
|
|
#define P2_2 (1 << 0) // p2.0 -> p26
|
|
#define PORT_2 Port2
|
|
|
|
#elif defined(TARGET_LPC4088)
|
|
#define P1_1 (1 << 7) // p0.7 -> p13
|
|
#define P1_2 (1 << 6) // p0.6 -> p14
|
|
#define PORT_1 Port0
|
|
|
|
#define P2_1 (1 << 2) // p1.2 -> p30
|
|
#define P2_2 (1 << 3) // p1.3 -> p29
|
|
#define PORT_2 Port1
|
|
|
|
#elif defined(TARGET_LPC1114)
|
|
#define P1_1 (1 << 9) // p0.9
|
|
#define P1_2 (1 << 8) // p0.8
|
|
#define PORT_1 Port0
|
|
|
|
#define P2_1 (1 << 1) // p1.1
|
|
#define P2_2 (1 << 0) // p1.0
|
|
#define PORT_2 Port1
|
|
|
|
#elif defined(TARGET_KL25Z)
|
|
#define P1_1 (1 << 4) // PTA4
|
|
#define P1_2 (1 << 5) // PTA5
|
|
#define PORT_1 PortA
|
|
|
|
#define P2_1 (1 << 5) // PTC5
|
|
#define P2_2 (1 << 6) // PTC6
|
|
#define PORT_2 PortC
|
|
|
|
#elif defined(TARGET_nRF51822)
|
|
#define P1_1 (1 << 4) // p4
|
|
#define P1_2 (1 << 5) // p5
|
|
#define PORT_1 Port0
|
|
|
|
#define P2_1 (1 << 24) // p24
|
|
#define P2_2 (1 << 25) // p25
|
|
#define PORT_2 Port0
|
|
|
|
#elif defined(TARGET_MAXWSNENV)
|
|
#define P1_1 (1 << 0)
|
|
#define P1_2 (1 << 1)
|
|
#define PORT_1 Port0
|
|
|
|
#define P2_1 (1 << 0)
|
|
#define P2_2 (1 << 1)
|
|
#define PORT_2 Port1
|
|
|
|
#elif defined(TARGET_MAX32600MBED)
|
|
#define P1_1 (1 << 0) // P1_0
|
|
#define P1_2 (1 << 1) // P1_1
|
|
#define PORT_1 Port1
|
|
|
|
#define P2_1 (1 << 7) // P4_7
|
|
#define P2_2 (1 << 6) // P4_6
|
|
#define PORT_2 Port4
|
|
|
|
#elif defined(TARGET_NUCLEO_F030R8) || \
|
|
defined(TARGET_NUCLEO_F070RB) || \
|
|
defined(TARGET_NUCLEO_F072RB) || \
|
|
defined(TARGET_NUCLEO_F091RC) || \
|
|
defined(TARGET_NUCLEO_F103RB) || \
|
|
defined(TARGET_NUCLEO_F302R8) || \
|
|
defined(TARGET_NUCLEO_F303RE) || \
|
|
defined(TARGET_NUCLEO_F334R8) || \
|
|
defined(TARGET_NUCLEO_F401RE) || \
|
|
defined(TARGET_NUCLEO_F410RB) || \
|
|
defined(TARGET_NUCLEO_F411RE) || \
|
|
defined(TARGET_NUCLEO_L053R8) || \
|
|
defined(TARGET_NUCLEO_L073RZ) || \
|
|
defined(TARGET_NUCLEO_L476RG) || \
|
|
defined(TARGET_NUCLEO_F446RE) || \
|
|
defined(TARGET_NUCLEO_L152RE)
|
|
#define P1_1 (1 << 3) // PB_3 (D3)
|
|
#define P1_2 (1 << 10) // PB_10 (D6)
|
|
#define PORT_1 PortB
|
|
|
|
#define P2_1 (1 << 10) // PA_10 (D2)
|
|
#define P2_2 (1 << 8) // PA_8 (D7)
|
|
#define PORT_2 PortA
|
|
|
|
#elif defined(TARGET_NUCLEO_F767ZI) || \
|
|
defined(TARGET_NUCLEO_F303ZE) || \
|
|
defined(TARGET_NUCLEO_F207ZG) || \
|
|
defined(TARGET_NUCLEO_F746ZG)
|
|
#define P1_1 (1 << 13) // PE_13 (D3)
|
|
#define P1_2 (1 << 11) // PE_11 (D5)
|
|
#define PORT_1 PortE
|
|
|
|
#define P2_1 (1 << 15) // PF_15 (D2)
|
|
#define P2_2 (1 << 14) // PF_14 (D4)
|
|
#define PORT_2 PortF
|
|
|
|
#elif defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32GG_STK3700) || defined(TARGET_EFM32WG_STK3800)
|
|
#define P1_1 (1 << 0) // PD0
|
|
#define P1_2 (1 << 1) // PD1
|
|
#define PORT_1 PortD
|
|
|
|
#define P2_1 (1 << 3) // PC3
|
|
#define P2_2 (1 << 4) // PC4
|
|
#define PORT_2 PortC
|
|
|
|
#elif defined(TARGET_EFM32ZG_STK3200)
|
|
#define P1_1 (1 << 7) // PD7
|
|
#define P1_2 (1 << 6) // PD6
|
|
#define PORT_1 PortD
|
|
|
|
#define P2_1 (1 << 1) // PC1
|
|
#define P2_2 (1 << 2) // PC2
|
|
#define PORT_2 PortC
|
|
|
|
#elif defined(TARGET_EFM32HG_STK3400)
|
|
#define P1_1 (1 << 10) // PE10
|
|
#define P1_2 (1 << 11) // PE11
|
|
#define PORT_1 PortE
|
|
|
|
#define P2_1 (1 << 1) // PC1
|
|
#define P2_2 (1 << 2) // PC2
|
|
#define PORT_2 PortC
|
|
|
|
#elif defined(TARGET_EFM32PG_STK3401)
|
|
#define P1_1 (1 << 6) // PC6
|
|
#define P1_2 (1 << 7) // PC7
|
|
#define PORT_1 PortC
|
|
|
|
#define P2_1 (1 << 3) // PA3
|
|
#define P2_2 (1 << 4) // PA4
|
|
#define PORT_2 PortA
|
|
|
|
#elif defined(TARGET_SAMR21G18A) || defined(TARGET_SAMD21J18A)
|
|
#define P1_1 (1 << 6) /*PA06*/
|
|
#define P1_2 (1 << 7) /*PA07*/
|
|
#define PORT_1 PortA
|
|
|
|
#define P2_1 (1 << 2) /*PB02*/
|
|
#define P2_2 (1 << 3) /*PB03*/
|
|
#define PORT_2 PortB
|
|
|
|
#elif defined(TARGET_SAMD21G18A)
|
|
#define P1_1 (1 << 2) /*PA02*/
|
|
#define P1_2 (1 << 3) /*PA03*/
|
|
#define PORT_1 PortA
|
|
|
|
#define P2_1 (1 << 2) /*PB02*/
|
|
#define P2_2 (1 << 3) /*PB03*/
|
|
#define PORT_2 PortB
|
|
|
|
#elif defined(TARGET_SAML21J18A)
|
|
#define P1_1 (1 << 4) /*PA04*/
|
|
#define P1_2 (1 << 5) /*PA05*/
|
|
#define PORT_1 PortA
|
|
|
|
#define P2_1 (1 << 0) /*PB00*/
|
|
#define P2_2 (1 << 1) /*PB01*/
|
|
#define PORT_2 PortB
|
|
|
|
#elif defined(TARGET_SAMG55J19)
|
|
#define P1_1 (1 << 17) /*PA17*/
|
|
#define P1_2 (1 << 18) /*PA18*/
|
|
#define PORT_1 PortA
|
|
|
|
#define P2_1 (1 << 10) /*PB10*/
|
|
#define P2_2 (1 << 11) /*PB11*/
|
|
#define PORT_2 PortB
|
|
|
|
#elif defined(TARGET_VK_RZ_A1H)
|
|
#define P1_1 (1 << 2) /*P3_2*/
|
|
#define P1_2 (1 << 7) /*P3_7*/
|
|
#define PORT_1 Port3
|
|
|
|
#define P2_1 (1 << 6) /*P5_6*/
|
|
#define P2_2 (1 << 1) /*P5_1*/
|
|
#define PORT_2 Port5
|
|
|
|
#else
|
|
#error [NOT_SUPPORTED] This test is not defined on this target
|
|
#endif
|
|
|
|
#define MASK_1 (P1_1 | P1_2)
|
|
#define MASK_2 (P2_1 | P2_2)
|
|
|
|
PortInOut port1(PORT_1, MASK_1);
|
|
PortInOut port2(PORT_2, MASK_2);
|
|
|
|
int main() {
|
|
MBED_HOSTTEST_TIMEOUT(20);
|
|
MBED_HOSTTEST_SELECT(default_auto);
|
|
MBED_HOSTTEST_DESCRIPTION(PortInOut);
|
|
MBED_HOSTTEST_START("MBED_A11");
|
|
|
|
bool check = true;
|
|
|
|
port1.output();
|
|
port2.input();
|
|
|
|
port1 = MASK_1; wait(0.1);
|
|
if (port2 != MASK_2) check = false;
|
|
|
|
port1 = 0; wait(0.1);
|
|
if (port2 != 0) check = false;
|
|
|
|
port1.input();
|
|
port2.output();
|
|
|
|
port2 = MASK_2; wait(0.1);
|
|
if (port1 != MASK_1) check = false;
|
|
|
|
port2 = 0; wait(0.1);
|
|
if (port1 != 0) check = false;
|
|
|
|
MBED_HOSTTEST_RESULT(check);
|
|
}
|