diff options
Diffstat (limited to 'docs/uart_driver.md')
-rw-r--r-- | docs/uart_driver.md | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/docs/uart_driver.md b/docs/uart_driver.md index 9b0a92d23d..23f5b3d6e4 100644 --- a/docs/uart_driver.md +++ b/docs/uart_driver.md @@ -1,10 +1,10 @@ -# UART Driver :id=uart-driver +# UART Driver {#uart-driver} The UART drivers used in QMK have a set of common functions to allow portability between MCUs. Currently, this driver does not support enabling hardware flow control (the `RTS` and `CTS` pins) if available, but may do so in future. -## Usage :id=usage +## Usage {#usage} In most cases, the UART driver code is automatically included if you are using a feature or driver which requires it. @@ -16,7 +16,7 @@ UART_DRIVER_REQUIRED = yes You can then call the UART API by including `uart.h` in your code. -## AVR Configuration :id=avr-configuration +## AVR Configuration {#avr-configuration} No special setup is required - just connect the `RX` and `TX` pins of your UART device to the opposite pins on the MCU: @@ -28,7 +28,7 @@ No special setup is required - just connect the `RX` and `TX` pins of your UART |ATmega32A |`D1`|`D0`|*n/a*|*n/a*| |ATmega328/P |`D1`|`D0`|*n/a*|*n/a*| -## ChibiOS/ARM Configuration :id=arm-configuration +## ChibiOS/ARM Configuration {#arm-configuration} You'll need to determine which pins can be used for UART -- as an example, STM32 parts generally have multiple UART peripherals, labeled USART1, USART2, USART3 etc. @@ -53,45 +53,45 @@ Configuration-wise, you'll need to set up the peripheral as per your MCU's datas | `#define UART_RTS_PIN` | The pin to use for RTS | `A12` | | `#define UART_RTS_PAL_MODE` | The alternate function mode for RTS | `7` | -## API :id=api +## API {#api} -### `void uart_init(uint32_t baud)` :id=api-uart-init +### `void uart_init(uint32_t baud)` {#api-uart-init} Initialize the UART driver. This function must be called only once, before any of the below functions can be called. -#### Arguments :id=api-uart-init-arguments +#### Arguments {#api-uart-init-arguments} - `uint32_t baud` The baud rate to transmit and receive at. This may depend on the device you are communicating with. Common values are 1200, 2400, 4800, 9600, 19200, 38400, 57600, and 115200. --- -### `void uart_write(uint8_t data)` :id=api-uart-write +### `void uart_write(uint8_t data)` {#api-uart-write} Transmit a single byte. -#### Arguments :id=api-uart-write-arguments +#### Arguments {#api-uart-write-arguments} - `uint8_t data` The byte to write. --- -### `uint8_t uart_read(void)` :id=api-uart-read +### `uint8_t uart_read(void)` {#api-uart-read} Receive a single byte. -#### Return Value :id=api-uart-read-return +#### Return Value {#api-uart-read-return} The byte read from the receive buffer. This function will block if the buffer is empty (ie. no data to read). --- -### `void uart_transmit(const uint8_t *data, uint16_t length)` :id=api-uart-transmit +### `void uart_transmit(const uint8_t *data, uint16_t length)` {#api-uart-transmit} Transmit multiple bytes. -#### Arguments :id=api-uart-transmit-arguments +#### Arguments {#api-uart-transmit-arguments} - `const uint8_t *data` A pointer to the data to write from. @@ -100,11 +100,11 @@ Transmit multiple bytes. --- -### `void uart_receive(char *data, uint16_t length)` :id=api-uart-receive +### `void uart_receive(char *data, uint16_t length)` {#api-uart-receive} Receive multiple bytes. -#### Arguments :id=api-uart-receive-arguments +#### Arguments {#api-uart-receive-arguments} - `uint8_t *data` A pointer to the buffer to read into. @@ -113,10 +113,10 @@ Receive multiple bytes. --- -### `bool uart_available(void)` :id=api-uart-available +### `bool uart_available(void)` {#api-uart-available} Return whether the receive buffer contains data. Call this function to determine if `uart_read()` will return data immediately. -#### Return Value :id=api-uart-available-return +#### Return Value {#api-uart-available-return} `true` if the receive buffer length is non-zero. |