make variables static
This commit is contained in:
parent
41f0f7d7b4
commit
8b8b2bf287
21
lib/usart.c
21
lib/usart.c
|
@ -25,16 +25,17 @@
|
||||||
#include <libopencm3/stm32/gpio.h> // general purpose input output library
|
#include <libopencm3/stm32/gpio.h> // general purpose input output library
|
||||||
#include <libopencm3/stm32/usart.h> // universal synchronous asynchronous receiver transmitter library
|
#include <libopencm3/stm32/usart.h> // universal synchronous asynchronous receiver transmitter library
|
||||||
#include <libopencm3/cm3/nvic.h> // interrupt handler
|
#include <libopencm3/cm3/nvic.h> // interrupt handler
|
||||||
|
#include <libopencmsis/core_cm3.h> // Cortex M3 utilities
|
||||||
|
|
||||||
#include "usart.h" // USART header and definitions
|
#include "usart.h" // USART header and definitions
|
||||||
|
|
||||||
/* input and output ring buffer, indexes, and available memory */
|
/* input and output ring buffer, indexes, and available memory */
|
||||||
uint8_t rx_buffer[USART_BUFFER] = {0};
|
static uint8_t rx_buffer[USART_BUFFER] = {0};
|
||||||
volatile uint8_t rx_i = 0;
|
static volatile uint8_t rx_i = 0;
|
||||||
volatile uint8_t rx_used = 0;
|
static volatile uint8_t rx_used = 0;
|
||||||
uint8_t tx_buffer[USART_BUFFER] = {0};
|
static uint8_t tx_buffer[USART_BUFFER] = {0};
|
||||||
volatile uint8_t tx_i = 0;
|
static volatile uint8_t tx_i = 0;
|
||||||
volatile uint8_t tx_used = 0;
|
static volatile uint8_t tx_used = 0;
|
||||||
/* show the user how much data received over USART is ready */
|
/* show the user how much data received over USART is ready */
|
||||||
volatile uint8_t usart_received = 0; // same as rx_used, but since the user can write this variable we don't rely on it
|
volatile uint8_t usart_received = 0; // same as rx_used, but since the user can write this variable we don't rely on it
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ void usart_putchar_blocking(char c)
|
||||||
void usart_flush(void)
|
void usart_flush(void)
|
||||||
{
|
{
|
||||||
while (tx_used) { // idle until buffer is empty
|
while (tx_used) { // idle until buffer is empty
|
||||||
__asm__("wfi"); // sleep until interrupt
|
__WFI(); // sleep until interrupt
|
||||||
}
|
}
|
||||||
usart_wait_send_ready(USART); // wait until transmit register is empty (transmission might not be complete)
|
usart_wait_send_ready(USART); // wait until transmit register is empty (transmission might not be complete)
|
||||||
}
|
}
|
||||||
|
@ -88,7 +89,7 @@ void usart_flush(void)
|
||||||
char usart_getchar(void)
|
char usart_getchar(void)
|
||||||
{
|
{
|
||||||
while (!rx_used) { // idle until data is available
|
while (!rx_used) { // idle until data is available
|
||||||
__asm__("wfi"); // sleep until interrupt;
|
__WFI(); // sleep until interrupt;
|
||||||
}
|
}
|
||||||
char to_return = rx_buffer[rx_i]; // get the next available character
|
char to_return = rx_buffer[rx_i]; // get the next available character
|
||||||
rx_i = (rx_i+1)%sizeof(rx_buffer); // update used buffer
|
rx_i = (rx_i+1)%sizeof(rx_buffer); // update used buffer
|
||||||
|
@ -97,11 +98,11 @@ char usart_getchar(void)
|
||||||
return to_return;
|
return to_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* put character on USART stream (non-blocking using a buffer) */
|
/* put character on USART (non-blocking until buffer is full) */
|
||||||
void usart_putchar_nonblocking(char c)
|
void usart_putchar_nonblocking(char c)
|
||||||
{
|
{
|
||||||
while (tx_used>=sizeof(tx_buffer)) { // idle until buffer has some space
|
while (tx_used>=sizeof(tx_buffer)) { // idle until buffer has some space
|
||||||
__asm__("wfi");
|
__WFI();
|
||||||
}
|
}
|
||||||
tx_buffer[(tx_i+tx_used)%sizeof(tx_buffer)] = c; // put character in buffer
|
tx_buffer[(tx_i+tx_used)%sizeof(tx_buffer)] = c; // put character in buffer
|
||||||
tx_used++; // update used buffer
|
tx_used++; // update used buffer
|
||||||
|
|
|
@ -25,8 +25,8 @@
|
||||||
|
|
||||||
/* serial baudrate, in bits per second (with 8N1 8 bits, no parity bit, 1 stop bit settings) */
|
/* serial baudrate, in bits per second (with 8N1 8 bits, no parity bit, 1 stop bit settings) */
|
||||||
#define BAUD 115200
|
#define BAUD 115200
|
||||||
/* USART RX and TX buffer sizes */
|
/* RX and TX buffer sizes */
|
||||||
#define USART_BUFFER 64
|
#define USART_BUFFER 128
|
||||||
/* show the user how much received is available */
|
/* show the user how much received is available */
|
||||||
extern volatile uint8_t usart_received;
|
extern volatile uint8_t usart_received;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue