diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -7,6 +7,7 @@ #include "usb_lib.h" #include "usb_desc.h" #include "usb_pwr.h" +#include "stringhelpers.h" #define SSR_PERIOD 200 @@ -46,75 +47,6 @@ enum state { }; -char* itoa(int16_t i, char b[]){ - char const digit[] = "0123456789"; - char* p = b; - if(i<0){ - *p++ = '-'; - i *= -1; - } - uint16_t shifter = i; - do{ //Move to where representation ends - ++p; - shifter = shifter/10; - }while(shifter); - *p = '\0'; - do{ //Move back, inserting digits as you go - *--p = digit[i%10]; - i = i/10; - }while(i); - return b; -} - -char* itoa_fp(int16_t i, uint8_t frac, char b[]){ - char const digit[] = "0123456789"; - - // set p to beginning of char array - char* p = b; - - // If negative, set current char to '-' and inc, unnegate number - if(i<0){ - *p++ = '-'; - i *= -1; - } - - // Init shifter to numeric value - uint16_t shifter = i; - uint16_t frac_shifter = frac; - - // Iterate through 10s places, incrementing text pointer as we go - do{ - ++p; - shifter = shifter/10; - }while(shifter); - - ++p; // increment for decimal point - - do{ - ++p; - frac_shifter = frac_shifter/10; - }while(frac_shifter); - - - // Null-terminate the string - *p = '\0'; - - // Go backwards and write out fractional digits - do{ - *--p = digit[frac%10]; - frac = frac/10; - }while(frac); - - *--p = '.'; // insert decimal point - - // Go backwards and write out remaining digits - do{ - *--p = digit[i%10]; - i = i/10; - }while(i); - return b; -} - static __IO uint32_t TimingDelay;