]> code.bitgloo.com Git - clyne/calculator.git/commitdiff
serial support
authorClyne Sullivan <tullivan99@gmail.com>
Sun, 7 Jan 2018 00:47:40 +0000 (19:47 -0500)
committerClyne Sullivan <tullivan99@gmail.com>
Sun, 7 Jan 2018 00:47:40 +0000 (19:47 -0500)
Makefile
include/serial.h [new file with mode: 0644]
lib/liblua.a [deleted file]
src/main.c
src/serial.c [new file with mode: 0644]

index 87dd3a0906f0b2b1613cd108871403b58f592717..ad5b99f37e2559c0fd258f39100cc1b4a6ec9853 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@ OFILES = $(patsubst src/%.c, $(OUTDIR)/%.o, $(CFILES)) \
         $(patsubst src/%.s, $(OUTDIR)/%.asm.o, $(AFILES))
 
 LIBDIR = -Llib
-LIBS = -llua
+LIBS = 
 
 HEX = main.hex
 
diff --git a/include/serial.h b/include/serial.h
new file mode 100644 (file)
index 0000000..5b90748
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef SERIAL_H_
+#define SERIAL_H_
+
+void serial_init(void);
+void serial_put(int c);
+char serial_get(void);
+
+#endif // SERIAL_H_
diff --git a/lib/liblua.a b/lib/liblua.a
deleted file mode 100644 (file)
index d5a4c6b..0000000
Binary files a/lib/liblua.a and /dev/null differ
index d974ebc23a411f8bc471d187bbd161ae476e06e6..30bb18311ea5185add8c2ea8dd3841e55e457552 100644 (file)
@@ -5,6 +5,7 @@
 #include <gpio.h>\r
 #include <lcd.h>\r
 #include <initrd.h>\r
+#include <serial.h>\r
 \r
 /**\r
  * Accomplishments:\r
@@ -15,7 +16,8 @@
  *   - gpio lib\r
  *   - lcd support\r
  *   - initrd support\r
- *   - lua?\r
+ *   - lua? - no, something better, smaller\r
+ *   - serial IO\r
  */\r
 \r
 void pulse(uint8_t byte);\r
@@ -35,12 +37,14 @@ int main(void)
 \r
        gpio_mode(GPIOA, 5, OUTPUT);\r
 \r
+       serial_init();\r
+\r
        task_init(kmain);\r
 \r
        while (1);\r
 }\r
 \r
-void task(void);\r
+void serial_getter(void);\r
 void kmain(void)\r
 {\r
        asm("cpsie i");\r
@@ -48,12 +52,11 @@ void kmain(void)
        task_start(lcd_handler, 128);\r
        delay(200);\r
 \r
-       char *s = initrd_getfile("test.txt");\r
-       const char *t = "Yoyoyo";\r
-\r
-       asm("mov r0, %0; svc 2" :: "r" (s));\r
-       asm("mov r0, %0; svc 2" :: "r" (t));\r
+       //char *s = initrd_getfile("test.txt");\r
+       // svc puts\r
+       //asm("mov r0, %0; svc 2" :: "r" (s));\r
 \r
+       task_start(serial_getter, 128);\r
        while (1) {\r
                gpio_dout(GPIOA, 5, 1);\r
                delay(500);\r
@@ -62,3 +65,11 @@ void kmain(void)
        }\r
 }\r
 \r
+void serial_getter(void)\r
+{\r
+       char buf[2] = { 0, 0 };\r
+       while (1) {\r
+               buf[0] = serial_get();\r
+               asm("mov r0, %0; svc 2" :: "r" (buf));\r
+       }\r
+}\r
diff --git a/src/serial.c b/src/serial.c
new file mode 100644 (file)
index 0000000..692faf0
--- /dev/null
@@ -0,0 +1,27 @@
+#include <stm32l476xx.h>
+#include <gpio.h>
+
+void serial_init(void)
+{
+       gpio_mode(GPIOA, 2, ALTERNATE);
+       gpio_mode(GPIOA, 3, ALTERNATE);
+       GPIOA->AFR[0] &= ~(0x0000FF00);
+       GPIOA->AFR[0] |= 0x00007700;
+       RCC->APB1ENR1 |= RCC_APB1ENR1_USART2EN;
+
+       // start usart device
+       USART2->BRR = 80000000L / 115200L;
+       USART2->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_UE;
+}
+
+void serial_put(int c)
+{
+       while (!(USART2->ISR & USART_ISR_TXE));
+       USART2->TDR = c & 0xFF;
+}
+
+char serial_get(void)
+{
+       while (!(USART2->ISR & USART_ISR_RXNE));
+       return USART2->RDR & 0xFF;
+}