-void nmi_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void hard_fault_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void memmanage_fault_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void bus_fault_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void usage_fault_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void svcall_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void debugmonitor_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void pendablesrvreq_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void systick_isr(void) __attribute__ ((weak, alias("systick_default_isr")));
-
-void dma_ch0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch2_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch3_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch4_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch5_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch6_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch7_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch8_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch9_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch10_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch11_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch12_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch13_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch14_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_ch15_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dma_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void mcm_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void flash_cmd_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void flash_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void low_voltage_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void wakeup_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void watchdog_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void i2c0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void i2c1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void i2c2_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void spi0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void spi1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void spi2_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void sdhc_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void can0_message_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void can0_bus_off_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void can0_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void can0_tx_warn_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void can0_rx_warn_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void can0_wakeup_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void i2s0_tx_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void i2s0_rx_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart0_lon_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart0_status_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart0_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart1_status_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart1_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart2_status_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart2_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart3_status_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart3_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart4_status_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart4_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart5_status_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void uart5_error_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void adc0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void adc1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void cmp0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void cmp1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void cmp2_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void ftm0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void ftm1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void ftm2_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void ftm3_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void cmt_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void rtc_alarm_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void rtc_seconds_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void pit0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void pit1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void pit2_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void pit3_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void pdb_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void usb_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void usb_charge_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dac0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void dac1_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void tsi0_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void mcg_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void lptmr_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void porta_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void portb_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void portc_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void portd_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void porte_isr(void) __attribute__ ((weak, alias("unused_isr")));
-void software_isr(void) __attribute__ ((weak, alias("unused_isr")));
-
-
-// TODO: create AVR-stype ISR() macro, with default linkage to undefined handler
-//
+
+// NVIC - Non-Maskable Interrupt ISR
+void nmi_default_isr()
+{
+ print("NMI!" NL );
+}
+
+
+// NVIC - Hard Fault ISR
+void hard_fault_default_isr()
+{
+ print("Hard Fault! SCB_HFSR: ");
+ printHex32( SCB_HFSR );
+ print( NL );
+ SOFTWARE_RESET();
+}
+
+
+// NVIC - Memory Manager Fault ISR
+void memmanage_fault_default_isr()
+{
+ print("Memory Manager Fault! SCB_CFSR: ");
+ printHex32( SCB_CFSR );
+ print(" SCB_MMAR: ");
+ printHex32( SCB_MMAR );
+ print( NL );
+}
+
+
+// NVIC - Bus Fault ISR
+void bus_fault_default_isr()
+{
+ print("Bus Fault! SCB_CFSR: ");
+ printHex32( SCB_CFSR );
+ print(" SCB_BFAR: ");
+ printHex32( SCB_BFAR );
+ print( NL );
+}
+
+
+// NVIC - Usage Fault ISR
+void usage_fault_default_isr()
+{
+ print("Usage Fault! SCB_CFSR: ");
+ printHex32( SCB_CFSR );
+ print( NL );
+}
+
+
+// NVIC - Default ISR/Vector Linking
+void nmi_isr() __attribute__ ((weak, alias("nmi_default_isr")));
+void hard_fault_isr() __attribute__ ((weak, alias("hard_fault_default_isr")));
+void memmanage_fault_isr() __attribute__ ((weak, alias("memmanage_fault_default_isr")));
+void bus_fault_isr() __attribute__ ((weak, alias("bus_fault_default_isr")));
+void usage_fault_isr() __attribute__ ((weak, alias("usage_fault_default_isr")));
+void svcall_isr() __attribute__ ((weak, alias("unused_isr")));
+void debugmonitor_isr() __attribute__ ((weak, alias("unused_isr")));
+void pendablesrvreq_isr() __attribute__ ((weak, alias("unused_isr")));
+void systick_isr() __attribute__ ((weak, alias("systick_default_isr")));
+
+void dma_ch0_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch1_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch2_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch3_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch4_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch5_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch6_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch7_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch8_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch9_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch10_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch11_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch12_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch13_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch14_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_ch15_isr() __attribute__ ((weak, alias("unused_isr")));
+void dma_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void mcm_isr() __attribute__ ((weak, alias("unused_isr")));
+void flash_cmd_isr() __attribute__ ((weak, alias("unused_isr")));
+void flash_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void low_voltage_isr() __attribute__ ((weak, alias("unused_isr")));
+void wakeup_isr() __attribute__ ((weak, alias("unused_isr")));
+void watchdog_isr() __attribute__ ((weak, alias("unused_isr")));
+void i2c0_isr() __attribute__ ((weak, alias("unused_isr")));
+void i2c1_isr() __attribute__ ((weak, alias("unused_isr")));
+void i2c2_isr() __attribute__ ((weak, alias("unused_isr")));
+void spi0_isr() __attribute__ ((weak, alias("unused_isr")));
+void spi1_isr() __attribute__ ((weak, alias("unused_isr")));
+void spi2_isr() __attribute__ ((weak, alias("unused_isr")));
+void sdhc_isr() __attribute__ ((weak, alias("unused_isr")));
+void can0_message_isr() __attribute__ ((weak, alias("unused_isr")));
+void can0_bus_off_isr() __attribute__ ((weak, alias("unused_isr")));
+void can0_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void can0_tx_warn_isr() __attribute__ ((weak, alias("unused_isr")));
+void can0_rx_warn_isr() __attribute__ ((weak, alias("unused_isr")));
+void can0_wakeup_isr() __attribute__ ((weak, alias("unused_isr")));
+void i2s0_tx_isr() __attribute__ ((weak, alias("unused_isr")));
+void i2s0_rx_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart0_lon_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart0_status_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart0_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart1_status_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart1_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart2_status_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart2_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart3_status_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart3_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart4_status_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart4_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart5_status_isr() __attribute__ ((weak, alias("unused_isr")));
+void uart5_error_isr() __attribute__ ((weak, alias("unused_isr")));
+void adc0_isr() __attribute__ ((weak, alias("unused_isr")));
+void adc1_isr() __attribute__ ((weak, alias("unused_isr")));
+void cmp0_isr() __attribute__ ((weak, alias("unused_isr")));
+void cmp1_isr() __attribute__ ((weak, alias("unused_isr")));
+void cmp2_isr() __attribute__ ((weak, alias("unused_isr")));
+void ftm0_isr() __attribute__ ((weak, alias("unused_isr")));
+void ftm1_isr() __attribute__ ((weak, alias("unused_isr")));
+void ftm2_isr() __attribute__ ((weak, alias("unused_isr")));
+void ftm3_isr() __attribute__ ((weak, alias("unused_isr")));
+void cmt_isr() __attribute__ ((weak, alias("unused_isr")));
+void rtc_alarm_isr() __attribute__ ((weak, alias("unused_isr")));
+void rtc_seconds_isr() __attribute__ ((weak, alias("unused_isr")));
+void pit0_isr() __attribute__ ((weak, alias("unused_isr")));
+void pit1_isr() __attribute__ ((weak, alias("unused_isr")));
+void pit2_isr() __attribute__ ((weak, alias("unused_isr")));
+void pit3_isr() __attribute__ ((weak, alias("unused_isr")));
+void pdb_isr() __attribute__ ((weak, alias("unused_isr")));
+void usb_isr() __attribute__ ((weak, alias("unused_isr")));
+void usb_charge_isr() __attribute__ ((weak, alias("unused_isr")));
+void dac0_isr() __attribute__ ((weak, alias("unused_isr")));
+void dac1_isr() __attribute__ ((weak, alias("unused_isr")));
+void tsi0_isr() __attribute__ ((weak, alias("unused_isr")));
+void mcg_isr() __attribute__ ((weak, alias("unused_isr")));
+void lptmr_isr() __attribute__ ((weak, alias("unused_isr")));
+void porta_isr() __attribute__ ((weak, alias("unused_isr")));
+void portb_isr() __attribute__ ((weak, alias("unused_isr")));
+void portc_isr() __attribute__ ((weak, alias("unused_isr")));
+void portd_isr() __attribute__ ((weak, alias("unused_isr")));
+void porte_isr() __attribute__ ((weak, alias("unused_isr")));
+void software_isr() __attribute__ ((weak, alias("unused_isr")));
+
+
+// NVIC - Interrupt Vector Table