aboutsummaryrefslogtreecommitdiff
path: root/02-usart/src/lib.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2020-11-18 21:12:50 -0700
committerJosh Rahm <joshuarahm@gmail.com>2020-11-18 21:12:50 -0700
commit0f7a7e93ded497c0fd5a47f5e42633eae5d2365d (patch)
tree91eb11a8bdbd966ffee20adc9def1669c77010f4 /02-usart/src/lib.c
parent636169556449d1839c72727b82f7b27ca905d07f (diff)
downloadstm32l4-0f7a7e93ded497c0fd5a47f5e42633eae5d2365d.tar.gz
stm32l4-0f7a7e93ded497c0fd5a47f5e42633eae5d2365d.tar.bz2
stm32l4-0f7a7e93ded497c0fd5a47f5e42633eae5d2365d.zip
add lib.h/lib.c
Diffstat (limited to '02-usart/src/lib.c')
-rw-r--r--02-usart/src/lib.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/02-usart/src/lib.c b/02-usart/src/lib.c
new file mode 100644
index 0000000..d5d81da
--- /dev/null
+++ b/02-usart/src/lib.c
@@ -0,0 +1,56 @@
+#include "lib.h"
+
+#define nybble_to_hex(n) \
+ ((n) < 10 ? 0x30 + (n) : ('A' + ((n) - 10)))
+
+void hexify(uint32_t v, char* into)
+{
+ into += 8;
+
+ *(into--) = 0;
+
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+ *(into--) = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+ *into = nybble_to_hex(v & 0x0F);
+ v >>= 4;
+}
+
+void decimalify(int v, char* into)
+{
+ int c = 0;
+ int i;
+
+ if (v == 0) {
+ *(into ++) = '0';
+ *into = 0;
+ return;
+ } else {
+ while (v > 0) {
+ *(into ++) = 0x30 + (v % 10);
+ v /= 10;
+ ++ c;
+ }
+ }
+ *into = 0;
+
+ into -= c;
+ for (i = 0; i < c / 2; ++ i) {
+ char tmp = into[i];
+ into[i] = into[c - i - 1];
+ into[c - i - 1] = tmp;
+ }
+
+}