51 lines
972 B
C
51 lines
972 B
C
#include "serial.h"
|
|
|
|
#include "sh2.h"
|
|
|
|
void serial_char(const char c)
|
|
{
|
|
//while ((sh2.reg.SSR & SSR__TDRE) == 0); // wait for transmit data empty
|
|
sh2.reg.TDR = c;
|
|
}
|
|
|
|
void serial_string(const char * s)
|
|
{
|
|
while (*s) {
|
|
//while ((sh2.reg.SSR & SSR__TDRE) == 0); // wait for transmit data empty
|
|
sh2.reg.TDR = *s++;
|
|
}
|
|
}
|
|
|
|
void serial_bytes(const char * s, uint32_t length)
|
|
{
|
|
while (length > 0) {
|
|
//while ((sh2.reg.SSR & SSR__TDRE) == 0); // wait for transmit data empty
|
|
sh2.reg.TDR = *s++;
|
|
length -= 1;
|
|
}
|
|
}
|
|
|
|
static void hex(char * c, uint32_t len, uint32_t n)
|
|
{
|
|
while (len > 0) {
|
|
uint32_t nib = n & 0xf;
|
|
n = n >> 4;
|
|
if (nib > 9) {
|
|
nib += (97 - 10);
|
|
} else {
|
|
nib += (48 - 0);
|
|
}
|
|
|
|
c[--len] = nib;
|
|
}
|
|
}
|
|
|
|
void serial_integer(const uint32_t n, const uint32_t length, const char end)
|
|
{
|
|
char num_buf[length];
|
|
hex(num_buf, length, n);
|
|
serial_string("0x");
|
|
serial_bytes(num_buf, length);
|
|
serial_char(end);
|
|
}
|