diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2024-09-10 19:13:53 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2024-09-10 19:13:53 +0800 |
| commit | 7e7aeb931082f6876a2a1de215227ae51ebe1287 (patch) | |
| tree | 9f268b878c4ec35902b61dfd8279ec61aa55ec22 | |
| parent | 582b7eeb62154b95207d39ea612ceaf81d45f6f6 (diff) | |
| download | bare-metal-arduino-due-7e7aeb931082f6876a2a1de215227ae51ebe1287.tar.gz | |
Simplify code.
| -rw-r--r-- | main.c | 76 |
1 files changed, 19 insertions, 57 deletions
@@ -5,70 +5,32 @@ #define PORT PIOC -#define PIO_PER *((volatile unsigned int *)(PORT + 0x0000u)) -#define PIO_PDR *((volatile unsigned int *)(PORT + 0x0004u)) -#define PIO_PSR *((volatile unsigned int *)(PORT + 0x0008u)) -#define PIO_OER *((volatile unsigned int *)(PORT + 0x0010u)) -#define PIO_ODR *((volatile unsigned int *)(PORT + 0x0014u)) -#define PIO_OSR *((volatile unsigned int *)(PORT + 0x0018u)) -#define PIO_IFER *((volatile unsigned int *)(PORT + 0x0020u)) -#define PIO_IFDR *((volatile unsigned int *)(PORT + 0x0024u)) -#define PIO_IFSR *((volatile unsigned int *)(PORT + 0x0028u)) -#define PIO_SODR *((volatile unsigned int *)(PORT + 0x0030u)) -#define PIO_CODR *((volatile unsigned int *)(PORT + 0x0034u)) -#define PIO_ODSR *((volatile unsigned int *)(PORT + 0x0038u)) -#define PIO_PDSR *((volatile unsigned int *)(PORT + 0x003Cu)) -#define PIO_IER *((volatile unsigned int *)(PORT + 0x0040u)) -#define PIO_IDR *((volatile unsigned int *)(PORT + 0x0044u)) -#define PIO_IMR *((volatile unsigned int *)(PORT + 0x0048u)) -#define PIO_ISR *((volatile unsigned int *)(PORT + 0x004Cu)) -#define PIO_MDER *((volatile unsigned int *)(PORT + 0x0050u)) -#define PIO_MDDR *((volatile unsigned int *)(PORT + 0x0054u)) -#define PIO_MDSR *((volatile unsigned int *)(PORT + 0x0058u)) -#define PIO_PUDR *((volatile unsigned int *)(PORT + 0x0060u)) -#define PIO_PUER *((volatile unsigned int *)(PORT + 0x0064u)) -#define PIO_PUSR *((volatile unsigned int *)(PORT + 0x0068u)) -#define PIO_ABSR *((volatile unsigned int *)(PORT + 0x0070u)) -#define PIO_SCIFSR *((volatile unsigned int *)(PORT + 0x0080u)) -#define PIO_DIFSR *((volatile unsigned int *)(PORT + 0x0084u)) -#define PIO_IFDGSR *((volatile unsigned int *)(PORT + 0x0088u)) -#define PIO_SCDR *((volatile unsigned int *)(PORT + 0x008Cu)) -#define PIO_OWER *((volatile unsigned int *)(PORT + 0x00A0u)) -#define PIO_OWDR *((volatile unsigned int *)(PORT + 0x00A4u)) -#define PIO_OWSR *((volatile unsigned int *)(PORT + 0x00A8u)) -#define PIO_AIMER *((volatile unsigned int *)(PORT + 0x00B0u)) -#define PIO_AIMDR *((volatile unsigned int *)(PORT + 0x00B4u)) -#define PIO_AIMMR *((volatile unsigned int *)(PORT + 0x00B8u)) +#define PIO_PER *((volatile unsigned int *)(PORT + 0x0000u)) +#define PIO_OER *((volatile unsigned int *)(PORT + 0x0010u)) +#define PIO_SODR *((volatile unsigned int *)(PORT + 0x0030u)) +#define PIO_ODSR *((volatile unsigned int *)(PORT + 0x0038u)) +#define PIO_PUDR *((volatile unsigned int *)(PORT + 0x0060u)) +#define PIO_WPMR *((volatile unsigned int *)(PORT + 0x00E4u)) -#define PIO_WPMR *((volatile unsigned int *)(PORT + 0x00E4u)) -#define PIO_WPSR *((volatile unsigned int *)(PORT + 0x00E8u)) +#define WPKEY 0x50494Fu -#define PIN_NUM_MASK (1U << 1) -#define PIO_WPEN_MASK 0x50494F00 +#define GPIO_NUM 1 +#define GPIO_MASK (1u << PIN_NUM) int main(void) { - PIO_WPMR = PIO_WPEN_MASK & 0xFFFFFFFE; + // todo: enable peripheral clock - PIO_PER = 0x0000FFFF; - PIO_OER = 0x000000FF; - PIO_ODR = 0xFFFFFF00; - PIO_IFER = 0x00000F00; - PIO_IFDR = 0xFFFFF0FF; - PIO_SODR = 0x00000000; - PIO_CODR = 0x0FFFFFFF; - PIO_IER = 0x0F000F00; - PIO_IDR = 0xF0FFF0FF; - PIO_MDER = 0x0000000F; - PIO_MDDR = 0xFFFFFFF0; - PIO_PUDR = 0xF0F000F0; - PIO_PUER = 0x0F0FFF0F; - PIO_ABSR = 0x00F00000; - PIO_OWER = 0x0000000F; - PIO_OWDR = 0x0FFFFFF0; - - PIO_SODR = 0x000000F0; + PIO_WPMR = WPKEY << 8; + + PIO_PER |= GPIO_MASK; + PIO_OER |= GPIO_MASK; + PIO_PUDR |= GPIO_MASK; + PIO_WPMR = (WPKEY << 8) | 1u; + + PIO_SODR |= GPIO_MASK; + for (;;) ; |
