/* p2_6.c Toggle LED0 on SAMD21 Xplained Pro at 1 Hz * This program defines the registers without using the Atmel header files. * * Tested with Atmel Studio 7 v7.0.1006 and Keil MDK-ARM v5.20 */ #define PORTBDIR (*((volatile unsigned int*)0x41004480)) #define PORTBOUTCLR (*((volatile unsigned int*)0x41004484)) #define PORTBOUTSET (*((volatile unsigned int*)0x41004488)) void delayMs(int n); int main (void) { PORTBDIR = 0x40000000; /* make PB30 output */ /* toggle LED continuously at 1Hz */ while(1) { PORTBOUTCLR = 0x40000000; /* turn on LED0 */ delayMs(500); PORTBOUTSET = 0x40000000; /* turn off LED0 */ delayMs(500); } } /* millisecond delay based on 1 MHz system clock */ void delayMs(int n) { int i; for (; n > 0; n--) for (i = 0; i < 199; i++) __asm("nop"); }