fix LPC812 PWM

Dependents:   IR_LED_Send

Fork of mbed-dev by mbed official

Committer:
nameless129
Date:
Mon May 16 16:50:30 2016 +0000
Revision:
129:2e517c56bcfb
Parent:
0:9b334a45a8ff
PWM Fix:Duty 0%??H???????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:9b334a45a8ff 1 #include "cmsis.h"
bogdanm 0:9b334a45a8ff 2 #include <sys/types.h>
bogdanm 0:9b334a45a8ff 3 #include <errno.h>
bogdanm 0:9b334a45a8ff 4
bogdanm 0:9b334a45a8ff 5 extern "C" {
bogdanm 0:9b334a45a8ff 6
bogdanm 0:9b334a45a8ff 7 struct SCS3Regions {
bogdanm 0:9b334a45a8ff 8 unsigned long Dummy;
bogdanm 0:9b334a45a8ff 9 unsigned long* InitRam;
bogdanm 0:9b334a45a8ff 10 unsigned long* StartRam;
bogdanm 0:9b334a45a8ff 11 unsigned long InitSizeRam;
bogdanm 0:9b334a45a8ff 12 unsigned long ZeroSizeRam;
bogdanm 0:9b334a45a8ff 13 };
bogdanm 0:9b334a45a8ff 14
bogdanm 0:9b334a45a8ff 15 extern unsigned long __cs3_regions;
bogdanm 0:9b334a45a8ff 16 extern unsigned long __cs3_heap_start;
bogdanm 0:9b334a45a8ff 17
bogdanm 0:9b334a45a8ff 18 int main(void);
bogdanm 0:9b334a45a8ff 19 void __libc_init_array(void);
bogdanm 0:9b334a45a8ff 20 void exit(int ErrorCode);
bogdanm 0:9b334a45a8ff 21
bogdanm 0:9b334a45a8ff 22 static void *heap_pointer = NULL;
bogdanm 0:9b334a45a8ff 23
bogdanm 0:9b334a45a8ff 24 void __cs3_start_c(void) {
bogdanm 0:9b334a45a8ff 25 static SCS3Regions* pCS3Regions = (SCS3Regions*)&__cs3_regions;
bogdanm 0:9b334a45a8ff 26 unsigned long* pulDest;
bogdanm 0:9b334a45a8ff 27 unsigned long* pulSrc;
bogdanm 0:9b334a45a8ff 28 unsigned long ByteCount;
bogdanm 0:9b334a45a8ff 29 unsigned long i;
bogdanm 0:9b334a45a8ff 30
bogdanm 0:9b334a45a8ff 31 pulSrc = pCS3Regions->InitRam;
bogdanm 0:9b334a45a8ff 32 pulDest = pCS3Regions->StartRam;
bogdanm 0:9b334a45a8ff 33 ByteCount = pCS3Regions->InitSizeRam;
bogdanm 0:9b334a45a8ff 34 if (pulSrc != pulDest) {
bogdanm 0:9b334a45a8ff 35 for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) {
bogdanm 0:9b334a45a8ff 36 *(pulDest++) = *(pulSrc++);
bogdanm 0:9b334a45a8ff 37 }
bogdanm 0:9b334a45a8ff 38 } else {
bogdanm 0:9b334a45a8ff 39 pulDest = (unsigned long*)(void*)((char*)pulDest + ByteCount);
bogdanm 0:9b334a45a8ff 40 }
bogdanm 0:9b334a45a8ff 41
bogdanm 0:9b334a45a8ff 42 ByteCount = pCS3Regions->ZeroSizeRam;
bogdanm 0:9b334a45a8ff 43 for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) {
bogdanm 0:9b334a45a8ff 44 *(pulDest++) = 0;
bogdanm 0:9b334a45a8ff 45 }
bogdanm 0:9b334a45a8ff 46
bogdanm 0:9b334a45a8ff 47 heap_pointer = &__cs3_heap_start;
bogdanm 0:9b334a45a8ff 48 __libc_init_array();
bogdanm 0:9b334a45a8ff 49 exit(main());
bogdanm 0:9b334a45a8ff 50 }
bogdanm 0:9b334a45a8ff 51
bogdanm 0:9b334a45a8ff 52 int _kill(int pid, int sig) {
bogdanm 0:9b334a45a8ff 53 errno = EINVAL;
bogdanm 0:9b334a45a8ff 54 return -1;
bogdanm 0:9b334a45a8ff 55 }
bogdanm 0:9b334a45a8ff 56
bogdanm 0:9b334a45a8ff 57 void _exit(int status) {
bogdanm 0:9b334a45a8ff 58 exit(status);
bogdanm 0:9b334a45a8ff 59 }
bogdanm 0:9b334a45a8ff 60
bogdanm 0:9b334a45a8ff 61 int _getpid(void) {
bogdanm 0:9b334a45a8ff 62 return 1;
bogdanm 0:9b334a45a8ff 63 }
bogdanm 0:9b334a45a8ff 64
bogdanm 0:9b334a45a8ff 65 void *_sbrk(unsigned int incr) {
bogdanm 0:9b334a45a8ff 66 void *mem;
bogdanm 0:9b334a45a8ff 67
bogdanm 0:9b334a45a8ff 68 unsigned int next = ((((unsigned int)heap_pointer + incr) + 7) & ~7);
bogdanm 0:9b334a45a8ff 69 if (next > __get_MSP()) {
bogdanm 0:9b334a45a8ff 70 mem = NULL;
bogdanm 0:9b334a45a8ff 71 } else {
bogdanm 0:9b334a45a8ff 72 mem = (void *)heap_pointer;
bogdanm 0:9b334a45a8ff 73 }
bogdanm 0:9b334a45a8ff 74 heap_pointer = (void *)next;
bogdanm 0:9b334a45a8ff 75
bogdanm 0:9b334a45a8ff 76 return mem;
bogdanm 0:9b334a45a8ff 77 }
bogdanm 0:9b334a45a8ff 78
bogdanm 0:9b334a45a8ff 79 }