@@ -31,45 +31,46 @@ void pinMode( uint32_t ulPin, uint32_t ulMode )
3131    return ;
3232  }
3333
34-   ulPin  =  g_ADigitalPinMap [ulPin ];
34+   NRF_GPIO_Type *  port  =  digitalPinToPort (ulPin );
35+   uint32_t  pin  =  digitalPinToPin (ulPin );
3536
3637  // Set pin mode according to chapter '22.6.3 I/O Pin Configuration' 
3738  switch  ( ulMode  )
3839  {
3940    case  INPUT :
4041      // Set pin to input mode 
41-       NRF_GPIO -> PIN_CNF [ulPin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Input         << GPIO_PIN_CNF_DIR_Pos )
42-                                 | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect     << GPIO_PIN_CNF_INPUT_Pos )
43-                                 | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled     << GPIO_PIN_CNF_PULL_Pos )
44-                                 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
45-                                 | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
42+       port -> PIN_CNF [pin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Input         << GPIO_PIN_CNF_DIR_Pos )
43+                         | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect     << GPIO_PIN_CNF_INPUT_Pos )
44+                         | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled     << GPIO_PIN_CNF_PULL_Pos )
45+                         | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
46+                         | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
4647    break  ;
4748
4849    case  INPUT_PULLUP :
4950      // Set pin to input mode with pull-up resistor enabled 
50-       NRF_GPIO -> PIN_CNF [ulPin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Input         << GPIO_PIN_CNF_DIR_Pos )
51-                                 | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect     << GPIO_PIN_CNF_INPUT_Pos )
52-                                 | ((uint32_t )GPIO_PIN_CNF_PULL_Pullup       << GPIO_PIN_CNF_PULL_Pos )
53-                                 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
54-                                 | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
51+       port -> PIN_CNF [pin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Input         << GPIO_PIN_CNF_DIR_Pos )
52+                          | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect     << GPIO_PIN_CNF_INPUT_Pos )
53+                          | ((uint32_t )GPIO_PIN_CNF_PULL_Pullup       << GPIO_PIN_CNF_PULL_Pos )
54+                          | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
55+                          | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
5556    break  ;
5657
5758    case  INPUT_PULLDOWN :
5859      // Set pin to input mode with pull-down resistor enabled 
59-       NRF_GPIO -> PIN_CNF [ulPin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Input         << GPIO_PIN_CNF_DIR_Pos )
60-                                 | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect     << GPIO_PIN_CNF_INPUT_Pos )
61-                                 | ((uint32_t )GPIO_PIN_CNF_PULL_Pulldown     << GPIO_PIN_CNF_PULL_Pos )
62-                                 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
63-                                 | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
60+       port -> PIN_CNF [pin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Input         << GPIO_PIN_CNF_DIR_Pos )
61+                          | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect     << GPIO_PIN_CNF_INPUT_Pos )
62+                          | ((uint32_t )GPIO_PIN_CNF_PULL_Pulldown     << GPIO_PIN_CNF_PULL_Pos )
63+                          | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
64+                          | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
6465    break  ;
6566
6667    case  OUTPUT :
6768      // Set pin to output mode 
68-       NRF_GPIO -> PIN_CNF [ulPin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Output        << GPIO_PIN_CNF_DIR_Pos )
69-                                 | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect  << GPIO_PIN_CNF_INPUT_Pos )
70-                                 | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled     << GPIO_PIN_CNF_PULL_Pos )
71-                                 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
72-                                 | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
69+       port -> PIN_CNF [pin ] =  ((uint32_t )GPIO_PIN_CNF_DIR_Output        << GPIO_PIN_CNF_DIR_Pos )
70+                          | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect  << GPIO_PIN_CNF_INPUT_Pos )
71+                          | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled     << GPIO_PIN_CNF_PULL_Pos )
72+                          | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1        << GPIO_PIN_CNF_DRIVE_Pos )
73+                          | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled    << GPIO_PIN_CNF_SENSE_Pos );
7374    break  ;
7475
7576    default :
@@ -84,16 +85,17 @@ void digitalWrite( uint32_t ulPin, uint32_t ulVal )
8485    return ;
8586  }
8687
87-   ulPin  =  g_ADigitalPinMap [ulPin ];
88+   NRF_GPIO_Type *  port  =  digitalPinToPort (ulPin );
89+   uint32_t  mask  =  digitalPinToBitMask (ulPin );
8890
8991  switch  ( ulVal  )
9092  {
9193    case  LOW :
92-       NRF_GPIO -> OUTCLR  =  ( 1UL  <<  ulPin ) ;
94+       port -> OUTCLR  =  mask ;
9395    break  ;
9496
9597    default :
96-       NRF_GPIO -> OUTSET  =  ( 1UL  <<  ulPin ) ;
98+       port -> OUTSET  =  mask ;
9799    break  ;
98100  }
99101
@@ -106,9 +108,10 @@ int digitalRead( uint32_t ulPin )
106108    return  0 ;
107109  }
108110
109-   ulPin  =  g_ADigitalPinMap [ulPin ];
111+   NRF_GPIO_Type *  port  =  digitalPinToPort (ulPin );
112+   uint32_t  pin  =  digitalPinToPin (ulPin );
110113
111-   return  ((NRF_GPIO -> IN  >> ulPin ) &  1UL ) ? HIGH  : LOW  ;
114+   return  ((port -> IN  >> pin ) &  1UL ) ? HIGH  : LOW  ;
112115}
113116
114117#ifdef  __cplusplus 
0 commit comments