Ahoj, třeba ti alespoň trochu pomůže toto…
#include "string.h"
void serial_transmitx(char *buffer, uint16_t pocet){
uint16_t size = strlen(buffer);
if(pocet != 0){ size = pocet;}
while(size){
while(!(DEBUG_UART_REG->SR & USART_CR1_TCIE)); // wait while TX buffer full
DEBUG_UART_REG->DR = *buffer; // send single character to transmit buffer
buffer++; // transmit next character on following loop
size--; // loop until all characters sent (when size = 0)
}
while(DEBUG_UART_REG->SR & USART_CR1_TCIE); // wait for last transmission to finish
return;
}
void print_number(int16_t cislo){
char szNumber[12];
itoa(cislo, szNumber, 10);
serial_transmitx(szNumber,0);
serial_transmitx("\n",0);
}
int16_t itoa(int16_t number, char* out, int16_t base){
int16_t t, count;
char *p, *q;
char c;
p = q = out;
if(base < 2 || base > 36) base = 10;
do{
t = number;
number /= base;
if(out)
*p = ALPHANUMS[t+35 - number*base];
p++;
}while (number);
if(t < 0){
if (out) *p = '-';
p++;
}
count = p-out;
if(out){
*p-- = '\0';
while(q < p){
c = *p;
*p-- = *q;
*q++ = c;
}
}
return count;
}