added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
bogdanm
Date:
Thu Oct 01 15:25:22 2015 +0300
Revision:
0:9b334a45a8ff
Child:
144:ef7eb2e8f9f7
Initial commit on mbed-dev

Replaces mbed-src (now inactive)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:9b334a45a8ff 1 extern "C" {
bogdanm 0:9b334a45a8ff 2
bogdanm 0:9b334a45a8ff 3 #include "LPC11xx.h"
bogdanm 0:9b334a45a8ff 4
bogdanm 0:9b334a45a8ff 5 #define WEAK __attribute__ ((weak))
bogdanm 0:9b334a45a8ff 6 #define ALIAS(f) __attribute__ ((weak, alias (#f)))
bogdanm 0:9b334a45a8ff 7 #define AFTER_VECTORS __attribute__ ((section(".after_vectors")))
bogdanm 0:9b334a45a8ff 8
bogdanm 0:9b334a45a8ff 9 void ResetISR (void);
bogdanm 0:9b334a45a8ff 10 WEAK void NMI_Handler (void);
bogdanm 0:9b334a45a8ff 11 WEAK void HardFault_Handler (void);
bogdanm 0:9b334a45a8ff 12 WEAK void SVC_Handler (void);
bogdanm 0:9b334a45a8ff 13 WEAK void PendSV_Handler (void);
bogdanm 0:9b334a45a8ff 14 WEAK void SysTick_Handler (void);
bogdanm 0:9b334a45a8ff 15 WEAK void IntDefaultHandler (void);
bogdanm 0:9b334a45a8ff 16 void FLEX_INT0_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 17 void FLEX_INT1_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 18 void FLEX_INT2_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 19 void FLEX_INT3_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 20 void FLEX_INT4_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 21 void FLEX_INT5_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 22 void FLEX_INT6_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 23 void FLEX_INT7_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 24 void GINT0_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 25 void GINT1_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 26 void SSP1_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 27 void I2C_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 28 void TIMER16_0_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 29 void TIMER16_1_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 30 void TIMER32_0_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 31 void TIMER32_1_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 32 void SSP0_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 33 void UART_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 34 void USB_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 35 void USB_FIQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 36 void ADC_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 37 void WDT_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 38 void BOD_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 39 void FMC_IRQHandler (void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 40 void USBWakeup_IRQHandler(void) ALIAS(IntDefaultHandler);
bogdanm 0:9b334a45a8ff 41
bogdanm 0:9b334a45a8ff 42 extern void __libc_init_array(void);
bogdanm 0:9b334a45a8ff 43 extern int main(void);
bogdanm 0:9b334a45a8ff 44 extern void _vStackTop(void);
bogdanm 0:9b334a45a8ff 45
bogdanm 0:9b334a45a8ff 46 extern void (* const g_pfnVectors[])(void);
bogdanm 0:9b334a45a8ff 47 __attribute__ ((section(".isr_vector")))
bogdanm 0:9b334a45a8ff 48 void (* const g_pfnVectors[])(void) = {
bogdanm 0:9b334a45a8ff 49 &_vStackTop,
bogdanm 0:9b334a45a8ff 50 ResetISR,
bogdanm 0:9b334a45a8ff 51 NMI_Handler,
bogdanm 0:9b334a45a8ff 52 HardFault_Handler,
bogdanm 0:9b334a45a8ff 53 0,
bogdanm 0:9b334a45a8ff 54 0,
bogdanm 0:9b334a45a8ff 55 0,
bogdanm 0:9b334a45a8ff 56 0,
bogdanm 0:9b334a45a8ff 57 0,
bogdanm 0:9b334a45a8ff 58 0,
bogdanm 0:9b334a45a8ff 59 0,
bogdanm 0:9b334a45a8ff 60 SVC_Handler,
bogdanm 0:9b334a45a8ff 61 0,
bogdanm 0:9b334a45a8ff 62 0,
bogdanm 0:9b334a45a8ff 63 PendSV_Handler,
bogdanm 0:9b334a45a8ff 64 SysTick_Handler,
bogdanm 0:9b334a45a8ff 65 FLEX_INT0_IRQHandler,
bogdanm 0:9b334a45a8ff 66 FLEX_INT1_IRQHandler,
bogdanm 0:9b334a45a8ff 67 FLEX_INT2_IRQHandler,
bogdanm 0:9b334a45a8ff 68 FLEX_INT3_IRQHandler,
bogdanm 0:9b334a45a8ff 69 FLEX_INT4_IRQHandler,
bogdanm 0:9b334a45a8ff 70 FLEX_INT5_IRQHandler,
bogdanm 0:9b334a45a8ff 71 FLEX_INT6_IRQHandler,
bogdanm 0:9b334a45a8ff 72 FLEX_INT7_IRQHandler,
bogdanm 0:9b334a45a8ff 73 GINT0_IRQHandler,
bogdanm 0:9b334a45a8ff 74 GINT1_IRQHandler,
bogdanm 0:9b334a45a8ff 75 0,
bogdanm 0:9b334a45a8ff 76 0,
bogdanm 0:9b334a45a8ff 77 0,
bogdanm 0:9b334a45a8ff 78 0,
bogdanm 0:9b334a45a8ff 79 SSP1_IRQHandler,
bogdanm 0:9b334a45a8ff 80 I2C_IRQHandler,
bogdanm 0:9b334a45a8ff 81 TIMER16_0_IRQHandler,
bogdanm 0:9b334a45a8ff 82 TIMER16_1_IRQHandler,
bogdanm 0:9b334a45a8ff 83 TIMER32_0_IRQHandler,
bogdanm 0:9b334a45a8ff 84 TIMER32_1_IRQHandler,
bogdanm 0:9b334a45a8ff 85 SSP0_IRQHandler,
bogdanm 0:9b334a45a8ff 86 UART_IRQHandler,
bogdanm 0:9b334a45a8ff 87 USB_IRQHandler,
bogdanm 0:9b334a45a8ff 88 USB_FIQHandler,
bogdanm 0:9b334a45a8ff 89 ADC_IRQHandler,
bogdanm 0:9b334a45a8ff 90 WDT_IRQHandler,
bogdanm 0:9b334a45a8ff 91 BOD_IRQHandler,
bogdanm 0:9b334a45a8ff 92 FMC_IRQHandler,
bogdanm 0:9b334a45a8ff 93 0,
bogdanm 0:9b334a45a8ff 94 0,
bogdanm 0:9b334a45a8ff 95 USBWakeup_IRQHandler,
bogdanm 0:9b334a45a8ff 96 0,
bogdanm 0:9b334a45a8ff 97 };
bogdanm 0:9b334a45a8ff 98
bogdanm 0:9b334a45a8ff 99 AFTER_VECTORS void data_init(unsigned int romstart, unsigned int start, unsigned int len) {
bogdanm 0:9b334a45a8ff 100 unsigned int *pulDest = (unsigned int*) start;
bogdanm 0:9b334a45a8ff 101 unsigned int *pulSrc = (unsigned int*) romstart;
bogdanm 0:9b334a45a8ff 102 unsigned int loop;
bogdanm 0:9b334a45a8ff 103 for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = *pulSrc++;
bogdanm 0:9b334a45a8ff 104 }
bogdanm 0:9b334a45a8ff 105
bogdanm 0:9b334a45a8ff 106 AFTER_VECTORS void bss_init(unsigned int start, unsigned int len) {
bogdanm 0:9b334a45a8ff 107 unsigned int *pulDest = (unsigned int*) start;
bogdanm 0:9b334a45a8ff 108 unsigned int loop;
bogdanm 0:9b334a45a8ff 109 for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = 0;
bogdanm 0:9b334a45a8ff 110 }
bogdanm 0:9b334a45a8ff 111
bogdanm 0:9b334a45a8ff 112 extern unsigned int __data_section_table;
bogdanm 0:9b334a45a8ff 113 extern unsigned int __data_section_table_end;
bogdanm 0:9b334a45a8ff 114 extern unsigned int __bss_section_table_end;
bogdanm 0:9b334a45a8ff 115
bogdanm 0:9b334a45a8ff 116 extern "C" void software_init_hook(void) __attribute__((weak));
bogdanm 0:9b334a45a8ff 117
bogdanm 0:9b334a45a8ff 118 AFTER_VECTORS void ResetISR(void) {
bogdanm 0:9b334a45a8ff 119 unsigned int LoadAddr, ExeAddr, SectionLen;
bogdanm 0:9b334a45a8ff 120 unsigned int *SectionTableAddr;
bogdanm 0:9b334a45a8ff 121
bogdanm 0:9b334a45a8ff 122 // Data Init
bogdanm 0:9b334a45a8ff 123 SectionTableAddr = &__data_section_table;
bogdanm 0:9b334a45a8ff 124 while (SectionTableAddr < &__data_section_table_end) {
bogdanm 0:9b334a45a8ff 125 LoadAddr = *SectionTableAddr++;
bogdanm 0:9b334a45a8ff 126 ExeAddr = *SectionTableAddr++;
bogdanm 0:9b334a45a8ff 127 SectionLen = *SectionTableAddr++;
bogdanm 0:9b334a45a8ff 128 data_init(LoadAddr, ExeAddr, SectionLen);
bogdanm 0:9b334a45a8ff 129 }
bogdanm 0:9b334a45a8ff 130
bogdanm 0:9b334a45a8ff 131 // BSS Init
bogdanm 0:9b334a45a8ff 132 while (SectionTableAddr < &__bss_section_table_end) {
bogdanm 0:9b334a45a8ff 133 ExeAddr = *SectionTableAddr++;
bogdanm 0:9b334a45a8ff 134 SectionLen = *SectionTableAddr++;
bogdanm 0:9b334a45a8ff 135 bss_init(ExeAddr, SectionLen);
bogdanm 0:9b334a45a8ff 136 }
bogdanm 0:9b334a45a8ff 137
bogdanm 0:9b334a45a8ff 138 SystemInit();
bogdanm 0:9b334a45a8ff 139 if (software_init_hook) // give control to the RTOS
bogdanm 0:9b334a45a8ff 140 software_init_hook(); // this will also call __libc_init_array
bogdanm 0:9b334a45a8ff 141 else {
bogdanm 0:9b334a45a8ff 142 __libc_init_array();
bogdanm 0:9b334a45a8ff 143 main();
bogdanm 0:9b334a45a8ff 144 }
bogdanm 0:9b334a45a8ff 145 while (1) {;}
bogdanm 0:9b334a45a8ff 146 }
bogdanm 0:9b334a45a8ff 147
bogdanm 0:9b334a45a8ff 148 AFTER_VECTORS void NMI_Handler (void) {while(1){}}
bogdanm 0:9b334a45a8ff 149 AFTER_VECTORS void HardFault_Handler(void) {while(1){}}
bogdanm 0:9b334a45a8ff 150 AFTER_VECTORS void SVC_Handler (void) {while(1){}}
bogdanm 0:9b334a45a8ff 151 AFTER_VECTORS void PendSV_Handler (void) {while(1){}}
bogdanm 0:9b334a45a8ff 152 AFTER_VECTORS void SysTick_Handler (void) {while(1){}}
bogdanm 0:9b334a45a8ff 153 AFTER_VECTORS void IntDefaultHandler(void) {while(1){}}
bogdanm 0:9b334a45a8ff 154
bogdanm 0:9b334a45a8ff 155 #include <stdlib.h>
bogdanm 0:9b334a45a8ff 156
bogdanm 0:9b334a45a8ff 157 void *operator new (size_t size) {return malloc(size);}
bogdanm 0:9b334a45a8ff 158 void *operator new[](size_t size) {return malloc(size);}
bogdanm 0:9b334a45a8ff 159
bogdanm 0:9b334a45a8ff 160 void operator delete (void *p) {free(p);}
bogdanm 0:9b334a45a8ff 161 void operator delete[](void *p) {free(p);}
bogdanm 0:9b334a45a8ff 162
bogdanm 0:9b334a45a8ff 163 int __aeabi_atexit(void *object, void (*destructor)(void *), void *dso_handle) {
bogdanm 0:9b334a45a8ff 164 return 0;
bogdanm 0:9b334a45a8ff 165 }
bogdanm 0:9b334a45a8ff 166
bogdanm 0:9b334a45a8ff 167 }