Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sun May 14 23:18:57 2017 +0000
Revision:
18:6a4db94011d3
Publishing again

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 extern "C" {
sahilmgandhi 18:6a4db94011d3 2
sahilmgandhi 18:6a4db94011d3 3 #include "LPC15xx.h"
sahilmgandhi 18:6a4db94011d3 4
sahilmgandhi 18:6a4db94011d3 5 #define WEAK __attribute__ ((weak))
sahilmgandhi 18:6a4db94011d3 6 #define ALIAS(f) __attribute__ ((weak, alias (#f)))
sahilmgandhi 18:6a4db94011d3 7 #define AFTER_VECTORS __attribute__ ((section(".after_vectors")))void ResetISR(void);
sahilmgandhi 18:6a4db94011d3 8
sahilmgandhi 18:6a4db94011d3 9 extern unsigned int __data_section_table;
sahilmgandhi 18:6a4db94011d3 10 extern unsigned int __data_section_table_end;
sahilmgandhi 18:6a4db94011d3 11 extern unsigned int __bss_section_table;
sahilmgandhi 18:6a4db94011d3 12 extern unsigned int __bss_section_table_end;
sahilmgandhi 18:6a4db94011d3 13
sahilmgandhi 18:6a4db94011d3 14
sahilmgandhi 18:6a4db94011d3 15 extern void __libc_init_array(void);
sahilmgandhi 18:6a4db94011d3 16 extern int main(void);
sahilmgandhi 18:6a4db94011d3 17 extern void _vStackTop(void);
sahilmgandhi 18:6a4db94011d3 18 extern void (* const g_pfnVectors[])(void);
sahilmgandhi 18:6a4db94011d3 19
sahilmgandhi 18:6a4db94011d3 20 void ResetISR (void);
sahilmgandhi 18:6a4db94011d3 21 WEAK void NMI_Handler(void);
sahilmgandhi 18:6a4db94011d3 22 WEAK void HardFault_Handler(void);
sahilmgandhi 18:6a4db94011d3 23 WEAK void MemManage_Handler(void);
sahilmgandhi 18:6a4db94011d3 24 WEAK void BusFault_Handler(void);
sahilmgandhi 18:6a4db94011d3 25 WEAK void UsageFault_Handler(void);
sahilmgandhi 18:6a4db94011d3 26 WEAK void SVC_Handler(void);
sahilmgandhi 18:6a4db94011d3 27 WEAK void DebugMon_Handler(void);
sahilmgandhi 18:6a4db94011d3 28 WEAK void PendSV_Handler(void);
sahilmgandhi 18:6a4db94011d3 29 WEAK void SysTick_Handler(void);
sahilmgandhi 18:6a4db94011d3 30 WEAK void IntDefaultHandler(void);
sahilmgandhi 18:6a4db94011d3 31
sahilmgandhi 18:6a4db94011d3 32
sahilmgandhi 18:6a4db94011d3 33 void WDT_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 34 void BOD_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 35 void FMC_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 36 void EEPROM_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 37 void DMA_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 38 void GINT0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 39 void GINT1_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 40 void PIN_INT0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 41 void PIN_INT1_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 42 void PIN_INT2_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 43 void PIN_INT3_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 44 void PIN_INT4_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 45 void PIN_INT5_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 46 void PIN_INT6_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 47 void PIN_INT7_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 48 void RIT_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 49 void SCT0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 50 void SCT1_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 51 void SCT2_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 52 void SCT3_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 53 void MRT_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 54 void UART0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 55 void UART1_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 56 void UART2_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 57 void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 58 void SPI0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 59 void SPI1_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 60 void CAN_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 61 void USB_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 62 void USB_FIQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 63 void USBWakeup_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 64 void ADC0A_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 65 void ADC0B_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 66 void ADC0_THCMP_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 67 void ADC0_OVR_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 68 void ADC1A_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 69 void ADC1B_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 70 void ADC1_THCMP_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 71 void ADC1_OVR_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 72 void DAC_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 73 void ACMP0_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 74 void ACMP1_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 75 void ACMP2_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 76 void ACMP3_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 77 void QEI_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 78 void RTC_ALARM_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 79 void RTC_WAKE_IRQHandler(void) ALIAS(IntDefaultHandler);
sahilmgandhi 18:6a4db94011d3 80
sahilmgandhi 18:6a4db94011d3 81
sahilmgandhi 18:6a4db94011d3 82 __attribute__ ((section(".isr_vector")))
sahilmgandhi 18:6a4db94011d3 83 void (* const g_pfnVectors[])(void) = {
sahilmgandhi 18:6a4db94011d3 84 // Core Level - CM3
sahilmgandhi 18:6a4db94011d3 85 &_vStackTop, // The initial stack pointer
sahilmgandhi 18:6a4db94011d3 86 ResetISR, // The reset handler
sahilmgandhi 18:6a4db94011d3 87 NMI_Handler, // The NMI handler
sahilmgandhi 18:6a4db94011d3 88 HardFault_Handler, // The hard fault handler
sahilmgandhi 18:6a4db94011d3 89 MemManage_Handler, // The MPU fault handler
sahilmgandhi 18:6a4db94011d3 90 BusFault_Handler, // The bus fault handler
sahilmgandhi 18:6a4db94011d3 91 UsageFault_Handler, // The usage fault handler
sahilmgandhi 18:6a4db94011d3 92 0, // Reserved
sahilmgandhi 18:6a4db94011d3 93 0, // Reserved
sahilmgandhi 18:6a4db94011d3 94 0, // Reserved
sahilmgandhi 18:6a4db94011d3 95 0, // Reserved
sahilmgandhi 18:6a4db94011d3 96 SVC_Handler, // SVCall handler
sahilmgandhi 18:6a4db94011d3 97 DebugMon_Handler, // Debug monitor handler
sahilmgandhi 18:6a4db94011d3 98 0, // Reserved
sahilmgandhi 18:6a4db94011d3 99 PendSV_Handler, // The PendSV handler
sahilmgandhi 18:6a4db94011d3 100 SysTick_Handler, // The SysTick handler
sahilmgandhi 18:6a4db94011d3 101
sahilmgandhi 18:6a4db94011d3 102 // Chip Level - LPC15xx
sahilmgandhi 18:6a4db94011d3 103 WDT_IRQHandler, // 0 - Windowed watchdog timer
sahilmgandhi 18:6a4db94011d3 104 BOD_IRQHandler, // 1 - BOD
sahilmgandhi 18:6a4db94011d3 105 FMC_IRQHandler, // 2 - Flash controller
sahilmgandhi 18:6a4db94011d3 106 EEPROM_IRQHandler, // 3 - EEPROM controller
sahilmgandhi 18:6a4db94011d3 107 DMA_IRQHandler, // 4 - DMA
sahilmgandhi 18:6a4db94011d3 108 GINT0_IRQHandler, // 5 - GINT0
sahilmgandhi 18:6a4db94011d3 109 GINT1_IRQHandler, // 6 - GINT1
sahilmgandhi 18:6a4db94011d3 110 PIN_INT0_IRQHandler, // 7 - PIO INT0
sahilmgandhi 18:6a4db94011d3 111 PIN_INT1_IRQHandler, // 8 - PIO INT1
sahilmgandhi 18:6a4db94011d3 112 PIN_INT2_IRQHandler, // 9 - PIO INT2
sahilmgandhi 18:6a4db94011d3 113 PIN_INT3_IRQHandler, // 10 - PIO INT3
sahilmgandhi 18:6a4db94011d3 114 PIN_INT4_IRQHandler, // 11 - PIO INT4
sahilmgandhi 18:6a4db94011d3 115 PIN_INT5_IRQHandler, // 12 - PIO INT5
sahilmgandhi 18:6a4db94011d3 116 PIN_INT6_IRQHandler, // 13 - PIO INT6
sahilmgandhi 18:6a4db94011d3 117 PIN_INT7_IRQHandler, // 14 - PIO INT7
sahilmgandhi 18:6a4db94011d3 118 RIT_IRQHandler, // 15 - RIT
sahilmgandhi 18:6a4db94011d3 119 SCT0_IRQHandler, // 16 - State configurable timer
sahilmgandhi 18:6a4db94011d3 120 SCT1_IRQHandler, // 17 - State configurable timer
sahilmgandhi 18:6a4db94011d3 121 SCT2_IRQHandler, // 18 - State configurable timer
sahilmgandhi 18:6a4db94011d3 122 SCT3_IRQHandler, // 19 - State configurable timer
sahilmgandhi 18:6a4db94011d3 123 MRT_IRQHandler, // 20 - Multi-Rate Timer
sahilmgandhi 18:6a4db94011d3 124 UART0_IRQHandler, // 21 - UART0
sahilmgandhi 18:6a4db94011d3 125 UART1_IRQHandler, // 22 - UART1
sahilmgandhi 18:6a4db94011d3 126 UART2_IRQHandler, // 23 - UART2
sahilmgandhi 18:6a4db94011d3 127 I2C0_IRQHandler, // 24 - I2C0 controller
sahilmgandhi 18:6a4db94011d3 128 SPI0_IRQHandler, // 25 - SPI0 controller
sahilmgandhi 18:6a4db94011d3 129 SPI1_IRQHandler, // 26 - SPI1 controller
sahilmgandhi 18:6a4db94011d3 130 CAN_IRQHandler, // 27 - C_CAN0
sahilmgandhi 18:6a4db94011d3 131 USB_IRQHandler, // 28 - USB IRQ
sahilmgandhi 18:6a4db94011d3 132 USB_FIQHandler, // 29 - USB FIQ
sahilmgandhi 18:6a4db94011d3 133 USBWakeup_IRQHandler, // 30 - USB wake-up
sahilmgandhi 18:6a4db94011d3 134 ADC0A_IRQHandler, // 31 - ADC0 sequence A completion
sahilmgandhi 18:6a4db94011d3 135 ADC0B_IRQHandler, // 32 - ADC0 sequence B completion
sahilmgandhi 18:6a4db94011d3 136 ADC0_THCMP_IRQHandler, // 33 - ADC0 threshold compare
sahilmgandhi 18:6a4db94011d3 137 ADC0_OVR_IRQHandler, // 34 - ADC0 overrun
sahilmgandhi 18:6a4db94011d3 138 ADC1A_IRQHandler, // 35 - ADC1 sequence A completion
sahilmgandhi 18:6a4db94011d3 139 ADC1B_IRQHandler, // 36 - ADC1 sequence B completion
sahilmgandhi 18:6a4db94011d3 140 ADC1_THCMP_IRQHandler, // 37 - ADC1 threshold compare
sahilmgandhi 18:6a4db94011d3 141 ADC1_OVR_IRQHandler, // 38 - ADC1 overrun
sahilmgandhi 18:6a4db94011d3 142 DAC_IRQHandler, // 39 - DAC
sahilmgandhi 18:6a4db94011d3 143 ACMP0_IRQHandler, // 40 - Analog Comparator 0
sahilmgandhi 18:6a4db94011d3 144 ACMP1_IRQHandler, // 41 - Analog Comparator 1
sahilmgandhi 18:6a4db94011d3 145 ACMP2_IRQHandler, // 42 - Analog Comparator 2
sahilmgandhi 18:6a4db94011d3 146 ACMP3_IRQHandler, // 43 - Analog Comparator 3
sahilmgandhi 18:6a4db94011d3 147 QEI_IRQHandler, // 44 - QEI
sahilmgandhi 18:6a4db94011d3 148 RTC_ALARM_IRQHandler, // 45 - RTC alarm
sahilmgandhi 18:6a4db94011d3 149 RTC_WAKE_IRQHandler, // 46 - RTC wake-up
sahilmgandhi 18:6a4db94011d3 150
sahilmgandhi 18:6a4db94011d3 151 };
sahilmgandhi 18:6a4db94011d3 152 /* End Vector */
sahilmgandhi 18:6a4db94011d3 153
sahilmgandhi 18:6a4db94011d3 154 AFTER_VECTORS void data_init(unsigned int romstart, unsigned int start, unsigned int len) {
sahilmgandhi 18:6a4db94011d3 155 unsigned int *pulDest = (unsigned int*) start;
sahilmgandhi 18:6a4db94011d3 156 unsigned int *pulSrc = (unsigned int*) romstart;
sahilmgandhi 18:6a4db94011d3 157 unsigned int loop;
sahilmgandhi 18:6a4db94011d3 158 for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = *pulSrc++;
sahilmgandhi 18:6a4db94011d3 159 }
sahilmgandhi 18:6a4db94011d3 160
sahilmgandhi 18:6a4db94011d3 161 AFTER_VECTORS void bss_init(unsigned int start, unsigned int len) {
sahilmgandhi 18:6a4db94011d3 162 unsigned int *pulDest = (unsigned int*) start;
sahilmgandhi 18:6a4db94011d3 163 unsigned int loop;
sahilmgandhi 18:6a4db94011d3 164 for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = 0;
sahilmgandhi 18:6a4db94011d3 165 }
sahilmgandhi 18:6a4db94011d3 166
sahilmgandhi 18:6a4db94011d3 167
sahilmgandhi 18:6a4db94011d3 168 /* Reset entry point*/
sahilmgandhi 18:6a4db94011d3 169 extern "C" void software_init_hook(void);
sahilmgandhi 18:6a4db94011d3 170 extern "C" void pre_main(void) __attribute__((weak));
sahilmgandhi 18:6a4db94011d3 171
sahilmgandhi 18:6a4db94011d3 172 AFTER_VECTORS void ResetISR(void) {
sahilmgandhi 18:6a4db94011d3 173 unsigned int LoadAddr, ExeAddr, SectionLen;
sahilmgandhi 18:6a4db94011d3 174 unsigned int *SectionTableAddr;
sahilmgandhi 18:6a4db94011d3 175
sahilmgandhi 18:6a4db94011d3 176 SectionTableAddr = &__data_section_table;
sahilmgandhi 18:6a4db94011d3 177
sahilmgandhi 18:6a4db94011d3 178 while (SectionTableAddr < &__data_section_table_end) {
sahilmgandhi 18:6a4db94011d3 179 LoadAddr = *SectionTableAddr++;
sahilmgandhi 18:6a4db94011d3 180 ExeAddr = *SectionTableAddr++;
sahilmgandhi 18:6a4db94011d3 181 SectionLen = *SectionTableAddr++;
sahilmgandhi 18:6a4db94011d3 182 data_init(LoadAddr, ExeAddr, SectionLen);
sahilmgandhi 18:6a4db94011d3 183 }
sahilmgandhi 18:6a4db94011d3 184 while (SectionTableAddr < &__bss_section_table_end) {
sahilmgandhi 18:6a4db94011d3 185 ExeAddr = *SectionTableAddr++;
sahilmgandhi 18:6a4db94011d3 186 SectionLen = *SectionTableAddr++;
sahilmgandhi 18:6a4db94011d3 187 bss_init(ExeAddr, SectionLen);
sahilmgandhi 18:6a4db94011d3 188 }
sahilmgandhi 18:6a4db94011d3 189
sahilmgandhi 18:6a4db94011d3 190 SystemInit();
sahilmgandhi 18:6a4db94011d3 191 if (pre_main) { // give control to the RTOS
sahilmgandhi 18:6a4db94011d3 192 software_init_hook(); // this will also call __libc_init_array
sahilmgandhi 18:6a4db94011d3 193 }
sahilmgandhi 18:6a4db94011d3 194 else { // for BareMetal (non-RTOS) build
sahilmgandhi 18:6a4db94011d3 195 __libc_init_array();
sahilmgandhi 18:6a4db94011d3 196 main();
sahilmgandhi 18:6a4db94011d3 197 }
sahilmgandhi 18:6a4db94011d3 198 while (1) {;}
sahilmgandhi 18:6a4db94011d3 199 }
sahilmgandhi 18:6a4db94011d3 200
sahilmgandhi 18:6a4db94011d3 201 AFTER_VECTORS void NMI_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 202 AFTER_VECTORS void HardFault_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 203 AFTER_VECTORS void MemManage_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 204 AFTER_VECTORS void BusFault_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 205 AFTER_VECTORS void UsageFault_Handler(void) {}
sahilmgandhi 18:6a4db94011d3 206 AFTER_VECTORS void SVC_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 207 AFTER_VECTORS void DebugMon_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 208 AFTER_VECTORS void PendSV_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 209 AFTER_VECTORS void SysTick_Handler (void) {}
sahilmgandhi 18:6a4db94011d3 210 AFTER_VECTORS void IntDefaultHandler (void) {}
sahilmgandhi 18:6a4db94011d3 211
sahilmgandhi 18:6a4db94011d3 212 int __aeabi_atexit(void *object, void (*destructor)(void *), void *dso_handle) {return 0;}
sahilmgandhi 18:6a4db94011d3 213 }