summaryrefslogtreecommitdiffstats
path: root/app/usart.c
diff options
context:
space:
mode:
authorfishsoupisgood <github@madingley.org>2020-06-18 13:26:56 +0100
committerfishsoupisgood <github@madingley.org>2020-06-18 13:26:56 +0100
commite41764fceeabb1cdb6a7a299e00f2166a6f6ac32 (patch)
treec58c73d742bf990ec692d61ca8d911dd43fab8c6 /app/usart.c
parentf7b7cf9e80200cade938d47527e39034c75b9b6d (diff)
downloadrobs_speedo-e41764fceeabb1cdb6a7a299e00f2166a6f6ac32.tar.gz
robs_speedo-e41764fceeabb1cdb6a7a299e00f2166a6f6ac32.tar.bz2
robs_speedo-e41764fceeabb1cdb6a7a299e00f2166a6f6ac32.zip
moved stm32 into directory added noddy pcb
Diffstat (limited to 'app/usart.c')
-rw-r--r--app/usart.c119
1 files changed, 0 insertions, 119 deletions
diff --git a/app/usart.c b/app/usart.c
deleted file mode 100644
index 8d98287..0000000
--- a/app/usart.c
+++ /dev/null
@@ -1,119 +0,0 @@
-#include "project.h"
-
-#define BUFFER_SIZE 256
-
-
-#define USART1_TX GPIO_USART1_TX
-#define USART1_TX_PORT GPIOA
-#define USART1_RX GPIO_USART1_RX
-#define USART1_RX_PORT GPIOA
-
-
-ring_t rx1_ring;
-static uint8_t rx1_ring_buf[BUFFER_SIZE];
-
-ring_t tx1_ring;
-static uint8_t tx1_ring_buf[BUFFER_SIZE];
-
-void
-usart1_isr (void)
-{
- uint8_t data;
-
- /* Check if we were called because of RXNE. */
- if (((USART_CR1 (USART1) & USART_CR1_RXNEIE) != 0) &&
- ((USART_SR (USART1) & USART_SR_RXNE) != 0)) {
-
- /* Retrieve the data from the peripheral. */
- data = usart_recv (USART1);
-
-
- ring_write_byte (&rx1_ring, data);
- }
-
- /* Check if we were called because of TXE. */
- if (((USART_CR1 (USART1) & USART_CR1_TXEIE) != 0) &&
- ((USART_SR (USART1) & USART_SR_TXE) != 0)) {
-
- if (ring_read_byte (&tx1_ring, &data)) {
- /*No more data, Disable the TXE interrupt, it's no longer needed. */
- USART_CR1 (USART1) &= ~USART_CR1_TXEIE;
- } else
- usart_send (USART1, data);
- }
-
-}
-
-
-int
-_write (int file, char *ptr, int len)
-{
- int ret;
-
- if (file == 1) {
- ret = len;
-
- usart1_drain();
-
- while (len--) {
- if (*ptr == '\n')
- ring_write_byte (&tx1_ring, '\r');
-
- ring_write_byte (&tx1_ring, * (ptr++));
- }
-
- USART_CR1 (USART1) |= USART_CR1_TXEIE;
- return ret;
- }
-
- errno = EIO;
- return -1;
-}
-
-void
-usart1_queue (uint8_t d)
-{
- ring_write_byte (&tx1_ring, d);
- USART_CR1 (USART1) |= USART_CR1_TXEIE;
-}
-
-
-void
-usart1_drain (void)
-{
- while (!ring_empty (&tx1_ring));
-}
-
-
-
-void
-usart_init (void)
-{
- rcc_periph_clock_enable (RCC_USART1);
-
- ring_init (&rx1_ring, rx1_ring_buf, sizeof (rx1_ring_buf));
- ring_init (&tx1_ring, tx1_ring_buf, sizeof (tx1_ring_buf));
-
- /* Enable the USART1,2 interrupt. */
- nvic_enable_irq (NVIC_USART1_IRQ);
-
- /* Map pins, and usart1 to have pull ups */
- MAP_AF_PP (USART1_TX);
- MAP_INPUT_PU (USART1_RX);
-
-
- /* Setup UART1 parameters. */
- usart_set_baudrate (USART1, 115200);
- usart_set_databits (USART1, 8);
- usart_set_stopbits (USART1, USART_STOPBITS_1);
- usart_set_parity (USART1, USART_PARITY_NONE);
- usart_set_flow_control (USART1, USART_FLOWCONTROL_NONE);
- usart_set_mode (USART1, USART_MODE_TX_RX);
-
-
- /* Enable USART1 Receive interrupt. */
- USART_CR1 (USART1) |= USART_CR1_RXNEIE;
-
- /* Finally enable the USARTs. */
- usart_enable (USART1);
-}