UART API
Um ein UART-Gerät zu erstellen, rufe als erstes uart_init auf und Übergib die Struct uart_config_t. Die Struct definiert die RX/TX Pins, Baudrate und die rx/write_done Callbacks.
uart_dev_t uart_init (const uart_config_t *config)
Initialisiert ein UART-Gerät. Das Argument config definiert die Pins, Konfiguration und Callbacks für das UART-Gerät. Es enthält folgende Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
rx | pin_t | Der RX Pin (oder NO_PIN um RX zu deaktivieren) |
tx | pin_t | Der TX Pin (oder NO_PIN um TX zu deaktivieren) |
baud_rate | uint32_t | Die Baudrate (z.B. 115200) |
rx_data | callback | Wird für jeden empfangenen Byte am RX-Pin aufgerufen |
write_done | callback | Wird aufgerufen, wenn die Übertragung am TX-Pin fertig ist |
user_data | void * | Daten, die in das erste Argument der Callbacks übergeben werden |
Die beiden Callbacks (rx_data und write_done) sind optional. Sie nutzen einen Pointer auf user_data als erstes Argument.
Beispiel:
static void on_uart_rx_data(void *user_data, uint8_t byte) {
// `byte` ist der vom "RX" Pin empfangene Byte
}
static uint8_t on_uart_write_done(void *user_data) {
// Hier kannst du zu übertragende Pakete senden, indem du uart_write aufrufst.
}
// ...
const uart_config_t uart1 = {
.tx = pin_init("TX", INPUT_PULLUP),
.rx = pin_init("RX", INPUT),
.baud_rate = 115200,
.rx_data = on_uart_rx_data,
.write_done = on_uart_write_done,
.user_data = chip,
};
bool uart_write (uart_dev_t uart, uint8_t *buffer, uint32_t count)
Sendet count Bytes vom Speicher, auf den vom buffer gezeigt wird an das angegebene uart-Gerät.
Gibt true bei Erfolg zurück oder false, wenn das UART-Gerät schon Daten überträgt (die neuen Daten werden nicht übertragen).
Die Daten werden nach der Rückgabe von uart_write übertragen. Sobald Wokwi die Daten fertig übertragen hat, wird das write_done Callback aufgerugen.