8000 nrf: add support for nrf52833 · domdfcoding/circuitpython@3ed5b87 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3ed5b87

Browse files
committed
nrf: add support for nrf52833
This adds preliminary support for the nRF52833, which is a variant of the nRF52840 with half the RAM, half the flash, and fewer peripherals. Signed-off-by: Sean Cross <sean@xobs.io>
1 parent 4ad1cbe commit 3ed5b87

File tree

12 files changed

+437
-6
lines changed

12 files changed

+437
-6
lines changed

ports/nrf/Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ SRC_C += \
182182
lib/tinyusb/src/portable/nordic/nrf5x/dcd_nrf5x.c
183183
endif
184184

185+
ifeq ($(MCU_SUB_VARIANT),nrf52833)
186+
SRC_C += \
187+
lib/tinyusb/src/portable/nordic/nrf5x/dcd_nrf5x.c
188+
endif
189+
185190
ifeq ($(CIRCUITPY_NETWORK),1)
186191
CFLAGS += -DMICROPY_PY_NETWORK=1
187192

ports/nrf/boards/common.template.ld

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* Specify the memory areas */
66
MEMORY
77
{
8-
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x100000 /* entire flash, 1 MiB */
8+
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ${FLASH_SIZE} /* entire flash */
99
/* nRF SoftDevice */
1010
FLASH_MBR (rx) : ORIGIN = ${MBR_START_ADDR}, LENGTH = ${MBR_SIZE}
1111
FLASH_SD (rx) : ORIGIN = ${SD_FLASH_START_ADDR}, LENGTH = ${SD_FLASH_SIZE}
@@ -23,7 +23,7 @@ MEMORY
2323
/* To measure the minimum required amount of memory for given configuration, set this number
2424
high enough to work and then check the mutation of the value done by sd_ble_enable. */
2525
SPIM3_RAM (rw) : ORIGIN = 0x20000000 + ${SOFTDEVICE_RAM_SIZE}, LENGTH = ${SPIM3_BUFFER_SIZE}
26-
RAM (xrw) : ORIGIN = 0x20000000 + ${SOFTDEVICE_RAM_SIZE} + ${SPIM3_BUFFER_SIZE}, LENGTH = 256K - ${SOFTDEVICE_RAM_SIZE} -${SPIM3_BUFFER_SIZE}
26+
RAM (xrw) : ORIGIN = 0x20000000 + ${SOFTDEVICE_RAM_SIZE} + ${SPIM3_BUFFER_SIZE}, LENGTH = ${RAM_SIZE} - ${SOFTDEVICE_RAM_SIZE} -${SPIM3_BUFFER_SIZE}
2727

2828
}
2929

ports/nrf/common-hal/microcontroller/__init__.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,5 +168,17 @@ STATIC const mp_rom_map_elem_t mcu_pin_globals_table[] = {
168168
{ MP_ROM_QSTR(MP_QSTR_P1_14), MP_ROM_PTR(&pin_P1_14) },
169169
{ MP_ROM_QSTR(MP_QSTR_P1_15), MP_ROM_PTR(&pin_P1_15) },
170170
#endif
171+
#ifdef NRF52833
172+
{ MP_ROM_QSTR(MP_QSTR_P1_00), MP_ROM_PTR(&pin_P1_00) },
173+
{ MP_ROM_QSTR(MP_QSTR_P1_01), MP_ROM_PTR(&pin_P1_01) },
174+
{ MP_ROM_QSTR(MP_QSTR_P1_02), MP_ROM_PTR(&pin_P1_02) },
175+
{ MP_ROM_QSTR(MP_QSTR_P1_03), MP_ROM_PTR(&pin_P1_03) },
176+
{ MP_ROM_QSTR(MP_QSTR_P1_04), MP_ROM_PTR(&pin_P1_04) },
177+
{ MP_ROM_QSTR(MP_QSTR_P1_05), MP_ROM_PTR(&pin_P1_05) },
178+
{ MP_ROM_QSTR(MP_QSTR_P1_06), MP_ROM_PTR(&pin_P1_06) },
179+
{ MP_ROM_QSTR(MP_QSTR_P1_07), MP_ROM_PTR(&pin_P1_07) },
180+
{ MP_ROM_QSTR(MP_QSTR_P1_08), MP_ROM_PTR(&pin_P1_08) },
181+
{ MP_ROM_QSTR(MP_QSTR_P1_09), MP_ROM_PTR(&pin_P1_09) },
182+
#endif
171183
};
172184
MP_DEFINE_CONST_DICT(mcu_pin_globals, mcu_pin_globals_table);
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
/*
2+
* This file is part of the MicroPython project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* Copyright (c) 2017 Glenn Ruben Bakke
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#include <stdint.h>
28+
29+
extern uint32_t _estack;
30+
extern uint32_t _sidata;
31+
extern uint32_t _sdata;
32+
extern uint32_t _edata;
33+
extern uint32_t _sbss;
34+
extern uint32_t _ebss;
35+
36+
typedef void (*func)(void);
37+
38+
#define _start main
39+
40+
extern void _start(void) __attribute__((noreturn));
41+
extern void SystemInit(void);
42+
43+
void Default_Handler(void) {
44+
while (1);
45+
}
46+
47+
void Reset_Handler(void) {
48+
uint32_t * p_src = &_sidata;
49+
uint32_t * p_dest = &_sdata;
50+
51+
while (p_dest < &_edata) {
52+
*p_dest++ = *p_src++;
53+
}
54+
55+
uint32_t * p_bss = &_sbss;
56+
uint32_t * p_bss_end = &_ebss;
57+
while (p_bss < p_bss_end) {
58+
*p_bss++ = 0ul;
59+
}
60+
61+
SystemInit();
62+
_start();
63+
}
64+
65+
void NMI_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
66+
void HardFault_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
67+
void MemoryManagement_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
68+
void BusFault_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
69+
void UsageFault_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
70+
void SVC_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
71+
void DebugMon_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
72+
void PendSV_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
73+
void SysTick_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
74+
75+
void POWER_CLOCK_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
76+
void RADIO_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
77+
void UARTE0_UART0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
78+
void SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
79+
void SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
80+
void NFCT_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
81+
void GPIOTE_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
82+
void SAADC_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
83+
void TIMER0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
84+
void TIMER1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
85+
void TIMER2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
86+
void RTC0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
87+
void TEMP_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
88+
void RNG_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
89+
void ECB_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
90+
void CCM_AAR_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
91+
void WDT_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
92+
void RTC1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
93+
void QDEC_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
94+
void COMP_LPCOMP_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
95+
void SWI0_EGU0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
96+
void SWI1_EGU1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
97+
void SWI2_EGU2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
98+
void SWI3_EGU3_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
99+
void SWI4_EGU4_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
100+
void SWI5_EGU5_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
101+
void TIMER3_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
102+
void TIMER4_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
103+
void PWM0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
104+
void PDM_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
105+
void MWU_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
106+
void PWM1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
107+
void PWM2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
108+
void SPIM2_SPIS2_SPI2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
109+
void RTC2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
110+
void I2S_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
111+
void FPU_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
112+
void USBD_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
113+
void UARTE1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
114+
void PWM3_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
115+
void SPIM3_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
116+
117+
const func __Vectors[] __attribute__ ((used, section(".isr_vector"))) = {
118+
(func)&_estack,
119+
Reset_Handler,
120+
NMI_Handler,
121+
HardFault_Handler,
122+
MemoryManagement_Handler,
123+
BusFault_Handler,
124+
UsageFault_Handler,
125+
0,
126+
0,
127+
0,
128+
0,
129+
SVC_Handler,
130+
DebugMon_Handler,
131+
0,
132+
PendSV_Handler,
133+
SysTick_Handler,
134+
135+
/* External Interrupts */
136+
POWER_CLOCK_IRQHandler,
137+
RADIO_IRQHandler,
138+
UARTE0_UART0_IRQHandler,
139+
SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler,
140+
SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler,
141+
NFCT_IRQHandler,
142+
GPIOTE_IRQHandler,
143+
SAADC_IRQHandler,
144+
TIMER0_IRQHandler,
145+
TIMER1_IRQHandler,
146+
TIMER2_IRQHandler,
147+
RTC0_IRQHandler,
148+
TEMP_IRQHandler,
149+
RNG_IRQHandler,
150+
ECB_IRQHandler,
151+
CCM_AAR_IRQHandler,
152+
WDT_IRQHandler,
153+
RTC1_IRQHandler,
154+
QDEC_IRQHandler,
155+
COMP_LPCOMP_IRQHandler,
156+
SWI0_EGU0_IRQHandler,
157+
SWI1_EGU1_IRQHandler,
158+
SWI2_EGU2_IRQHandler,
159+
SWI3_EGU3_IRQHandler,
160+
SWI4_EGU4_IRQHandler,
161+
SWI5_EGU5_IRQHandler,
162+
TIMER3_IRQHandler,
163+
TIMER4_IRQHandler,
164+
PWM0_IRQHandler,
165+
PDM_IRQHandler,
166+
0,
167+
0,
168+
MWU_IRQHandler,
169+
PWM1_IRQHandler,
170+
PWM2_IRQHandler,
171+
SPIM2_SPIS2_SPI2_IRQHandler,
172+
RTC2_IRQHandler,
173+
I2S_IRQHandler,
174+
FPU_IRQHandler,
175+
USBD_IRQHandler,
176+
UARTE1_IRQHandler,
177+
0,
178+
0,
179+
0,
180+
0,
181+
PWM3_IRQHandler,
182+
0,
183+
SPIM3_IRQHandler,
184+
};

ports/nrf/ld_defines.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
// The next line is a marker to start looking for definitions. Lines above the next line are ignored.
1010
// START_LD_DEFINES
1111

12+
/*FLASH_SIZE=*/ FLASH_SIZE;
13+
/*RAM_SIZE=*/ RAM_SIZE;
14+
1215
/*MBR_START_ADDR=*/ MBR_START_ADDR;
1316
/*MBR_SIZE=*/ MBR_SIZE;
1417

ports/nrf/mpconfigport.h

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@
4141
#ifdef NRF52840
4242
#define MICROPY_PY_SYS_PLATFORM "nRF52840"
4343
#define FLASH_SIZE (0x100000) // 1MiB
44+
#define RAM_SIZE (0x40000) // 256 KiB
45+
// Special RAM area for SPIM3 transmit buffer, to work around hardware bug.
46+
// See common.template.ld.
47+
#define SPIM3_BUFFER_SIZE (8192)
48+
#endif
49+
50+
#ifdef NRF52833
51+
#define MICROPY_PY_SYS_PLATFORM "nRF52833"
52+
#define FLASH_SIZE (0x80000) // 512 KiB
53+
#define RAM_SIZE (0x20000) // 128 KiB
4454
// Special RAM area for SPIM3 transmit buffer, to work around hardware bug.
4555
// See common.template.ld.
4656
#define SPIM3_BUFFER_SIZE (8192)
@@ -112,14 +122,15 @@
112122
// Define these regions starting down from the bootloader:
113123

114124
// Bootloader values from https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/master/src/linker/s140_v6.ld
115-
#define BOOTLOADER_START_ADDR (0x000F4000)
125+
#define BOOTLOADER_START_ADDR (FLASH_SIZE - BOOTLOADER_SIZE - BOOTLOADER_SETTINGS_SIZE - BOOTLOADER_MBR_SIZE)
126+
#define BOOTLOADER_MBR_SIZE (0x1000) // 4kib
116127
#define BOOTLOADER_SIZE (0xA000) // 40kiB
117-
#define BOOTLOADER_SETTINGS_START_ADDR (0x000FF000)
128+
#define BOOTLOADER_SETTINGS_START_ADDR (FLASH_SIZE - BOOTLOADER_SETTINGS_SIZE)
118129
#define BOOTLOADER_SETTINGS_SIZE (0x1000) // 4kiB
119130

120131
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_START_ADDR (BOOTLOADER_START_ADDR - CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE)
121132

122-
#if CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE > 0 && CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_START_ADDR != (BOOTLOADER_START_ADDR - 256*1024)
133+
#if CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE > 0 && CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_START_ADDR != (BOOTLOADER_START_ADDR - CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE)
123134
#warning Internal flash filesystem location has moved!
124135
#endif
125136

ports/nrf/mpconfigport.mk

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,18 @@ NRF_DEFINES += -DNRF52840_XXAA -DNRF52840
7373
CFLAGS += -DCONFIG_NFCT_PINS_AS_GPIOS
7474

7575
CIRCUITPY_ULAB = 1
76+
77+
else
78+
ifeq ($(MCU_CHIP),nrf52833)
79+
MCU_SERIES = m4
80+
MCU_VARIANT = nrf52
81+
MCU_SUB_VARIANT = nrf52833
82+
83+
SD ?= s140
84+
SOFTDEV_VERSION ?= 6.1.0
85+
86+
BOOT_SETTING_ADDR = 0x7F000
87+
NRF_DEFINES += -DNRF52833_XXAA -DNRF52833
88+
89+
endif
7690
endif

ports/nrf/nrfx_config.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#define NRFX_SPIM1_ENABLED 1
4242
#endif
4343
#define NRFX_SPIM2_ENABLED 1
44-
#ifdef NRF52840_XXAA
44+
#if defined(NRF52840_XXAA) || defined(NRF52833_XXAA)
4545
#define NRFX_SPIM_EXTENDED_ENABLED 1
4646
#define NRFX_SPIM3_ENABLED 1
4747
#elif CIRCUITPY_NRF_NUM_I2C == 2
@@ -53,7 +53,9 @@
5353
#define NRFX_SPIM_MISO_PULL_CFG 1
5454

5555
// QSPI
56+
#if defined(NRF52840_XXAA)
5657
#define NRFX_QSPI_ENABLED 1
58+
#endif
5759

5860
// TWI aka. I2C; always enable TWIM0 (no conflict with SPIM1 and SPIM2)
5961
#if CIRCUITPY_NRF_NUM_I2C == 1 || CIRCUITPY_NRF_NUM_I2C == 2
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* This file is part of the MicroPython project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#include "py/obj.h"
28+
#include "py/mphal.h"
29+
#include "nrf/pins.h"
30+
31+
const mcu_pin_obj_t pin_P0_00 = PIN(P0_00, 0, 0, 0);
32+
const mcu_pin_obj_t pin_P0_01 = PIN(P0_01, 0, 1, 0);
33+
const mcu_pin_obj_t pin_P0_02 = PIN(P0_02, 0, 2, SAADC_CH_PSELP_PSELP_AnalogInput0);
34+
const mcu_pin_obj_t pin_P0_03 = PIN(P0_03, 0, 3, SAADC_CH_PSELP_PSELP_AnalogInput1);
35+
const mcu_pin_obj_t pin_P0_04 = PIN(P0_04, 0, 4, SAADC_CH_PSELP_PSELP_AnalogInput2);
36+
const mcu_pin_obj_t pin_P0_05 = PIN(P0_05, 0, 5, SAADC_CH_PSELP_PSELP_AnalogInput3);
37+
const mcu_pin_obj_t pin_P0_06 = PIN(P0_06, 0, 6, 0);
38+
const mcu_pin_obj_t pin_P0_07 = PIN(P0_07, 0, 7, 0);
39+
const mcu_pin_obj_t pin_P0_08 = PIN(P0_08, 0, 8, 0);
40+
const mcu_pin_obj_t pin_P0_09 = PIN(P0_09, 0, 9, 0);
41+
const mcu_pin_obj_t pin_P0_10 = PIN(P0_10, 0, 10, 0);
42+
const mcu_pin_obj_t pin_P0_11 = PIN(P0_11, 0, 11, 0);
43+
const mcu_pin_obj_t pin_P0_12 = PIN(P0_12, 0, 12, 0);
44+
const mcu_pin_obj_t pin_P0_13 = PIN(P0_13, 0, 13, 0);
45+
const mcu_pin_obj_t pin_P0_14 = PIN(P0_14, 0, 14, 0);
46+
const mcu_pin_obj_t pin_P0_15 = PIN(P0_15, 0, 15, 0);
47+
const mcu_pin_obj_t pin_P0_16 = PIN(P0_16, 0, 16, 0);
48+
const mcu_pin_obj_t pin_P0_17 = PIN(P0_17, 0, 17, 0);
49+
const mcu_pin_obj_t pin_P0_18 = PIN(P0_18, 0, 18, 0);
50+
const mcu_pin_obj_t pin_P0_19 = PIN(P0_19, 0, 19, 0);
51+
const mcu_pin_obj_t pin_P0_20 = PIN(P0_20, 0, 20, 0);
52+
const mcu_pin_obj_t pin_P0_21 = PIN(P0_21, 0, 21, 0);
53+
const mcu_pin_obj_t pin_P0_22 = PIN(P0_22, 0, 22, 0);
54+
const mcu_pin_obj_t pin_P0_23 = PIN(P0_23, 0, 23, 0);
55+
const mcu_pin_obj_t pin_P0_24 = PIN(P0_24, 0, 24, 0);
56+
const mcu_pin_obj_t pin_P0_25 = PIN(P0_25, 0, 25, 0);
57+
const mcu_pin_obj_t pin_P0_26 = PIN(P0_26, 0, 26, 0);
58+
const mcu_pin_obj_t pin_P0_27 = PIN(P0_27, 0, 27, 0);
59+
const mcu_pin_obj_t pin_P0_28 = PIN(P0_28, 0, 28, SAADC_CH_PSELP_PSELP_AnalogInput4);
60+
const mcu_pin_obj_t pin_P0_29 = PIN(P0_29, 0, 29, SAADC_CH_PSELP_PSELP_AnalogInput5);
61+
const mcu_pin_obj_t pin_P0_30 = PIN(P0_30, 0, 30, SAADC_CH_PSELP_PSELP_AnalogInput6);
62+
const mcu_pin_obj_t pin_P0_31 = PIN(P0_31, 0, 31, SAADC_CH_PSELP_PSELP_AnalogInput7);
63+
const mcu_pin_obj_t pin_P1_00 = PIN(P1_00, 1, 0, 0);
64+
const mcu_pin_obj_t pin_P1_01 = PIN(P1_01, 1, 1, 0);
65+
const mcu_pin_obj_t pin_P1_02 = PIN(P1_02, 1, 2, 0);
66+
const mcu_pin_obj_t pin_P1_03 = PIN(P1_03, 1, 3, 0);
67+
const mcu_pin_obj_t pin_P1_04 = PIN(P1_04, 1, 4, 0);
68+
const mcu_pin_obj_t pin_P1_05 = PIN(P1_05, 1, 5, 0);
69+
const mcu_pin_obj_t pin_P1_06 = PIN(P1_06, 1, 6, 0);
70+
const mcu_pin_obj_t pin_P1_07 = PIN(P1_07, 1, 7, 0);
71+
const mcu_pin_obj_t pin_P1_08 = PIN(P1_08, 1, 8, 0);
72+
const mcu_pin_obj_t pin_P1_09 = PIN(P1_09, 1, 9, 0);

0 commit comments

Comments
 (0)
0