usart.h

[Stub] support.

Library Documentation

USART definitions and prototypes.

Author:Marti Bolivar <>, Perry Hung <>

Defines
USART1_BASE

USART1 register map base pointer.

USART2_BASE

USART2 register map base pointer.

USART3_BASE

USART3 register map base pointer.

USART_SR_CTS_BIT

USART_SR_LBD_BIT

USART_SR_TXE_BIT

USART_SR_TC_BIT

USART_SR_RXNE_BIT

USART_SR_IDLE_BIT

USART_SR_ORE_BIT

USART_SR_NE_BIT

USART_SR_FE_BIT

USART_SR_PE_BIT

USART_SR_CTS

USART_SR_LBD

USART_SR_TXE

USART_SR_TC

USART_SR_RXNE

USART_SR_IDLE

USART_SR_ORE

USART_SR_NE

USART_SR_FE

USART_SR_PE

USART_DR_DR

USART_BRR_DIV_MANTISSA

USART_BRR_DIV_FRACTION

USART_CR1_UE_BIT

USART_CR1_M_BIT

USART_CR1_WAKE_BIT

USART_CR1_PCE_BIT

USART_CR1_PS_BIT

USART_CR1_PEIE_BIT

USART_CR1_TXEIE_BIT

USART_CR1_TCIE_BIT

USART_CR1_RXNEIE_BIT

USART_CR1_IDLEIE_BIT

USART_CR1_TE_BIT

USART_CR1_RE_BIT

USART_CR1_RWU_BIT

USART_CR1_SBK_BIT

USART_CR1_UE

USART_CR1_M

USART_CR1_WAKE

USART_CR1_WAKE_IDLE

USART_CR1_WAKE_ADDR

USART_CR1_PCE

USART_CR1_PS

USART_CR1_PS_EVEN

USART_CR1_PS_ODD

USART_CR1_PEIE

USART_CR1_TXEIE

USART_CR1_TCIE

USART_CR1_RXNEIE

USART_CR1_IDLEIE

USART_CR1_TE

USART_CR1_RE

USART_CR1_RWU

USART_CR1_RWU_ACTIVE

USART_CR1_RWU_MUTE

USART_CR1_SBK

USART_CR2_LINEN_BIT

USART_CR2_CLKEN_BIT

USART_CR2_CPOL_BIT

USART_CR2_CPHA_BIT

USART_CR2_LBCL_BIT

USART_CR2_LBDIE_BIT

USART_CR2_LBDL_BIT

USART_CR2_LINEN

USART_CR2_STOP

USART_CR2_STOP_BITS_1

USART_CR2_STOP_BITS_POINT_5

USART_CR2_STOP_BITS_1_POINT_5

USART_CR2_STOP_BITS_2

USART_CR2_CLKEN

USART_CR2_CPOL

USART_CR2_CPOL_LOW

USART_CR2_CPOL_HIGH

USART_CR2_CPHA

USART_CR2_CPHA_FIRST

USART_CR2_CPHA_SECOND

USART_CR2_LBCL

USART_CR2_LBDIE

USART_CR2_LBDL

USART_CR2_LBDL_10_BIT

USART_CR2_LBDL_11_BIT

USART_CR2_ADD

USART_CR3_CTSIE_BIT

USART_CR3_CTSE_BIT

USART_CR3_RTSE_BIT

USART_CR3_DMAT_BIT

USART_CR3_DMAR_BIT

USART_CR3_SCEN_BIT

USART_CR3_NACK_BIT

USART_CR3_HDSEL_BIT

USART_CR3_IRLP_BIT

USART_CR3_IREN_BIT

USART_CR3_EIE_BIT

USART_CR3_CTSIE

USART_CR3_CTSE

USART_CR3_RTSE

USART_CR3_DMAT

USART_CR3_DMAR

USART_CR3_SCEN

USART_CR3_NACK

USART_CR3_HDSEL

USART_CR3_IRLP

USART_CR3_IRLP_NORMAL

USART_CR3_IRLP_LOW_POWER

USART_CR3_IREN

USART_CR3_EIE

USART_GTPR_GT

USART_GTPR_PSC

Functions
void usart_init(usart_dev * dev)

Initialize a serial port.

Parameters:
  • dev -

    Serial port to be initialized

void usart_set_baud_rate(usart_dev * dev, uint32 clock_speed, uint32 baud)

Configure a serial port’s baud rate.

Parameters:
  • dev -

    Serial port to be configured

  • clock_speed -

    Clock speed, in megahertz.

  • baud -

    Baud rate for transmit/receive.

void usart_enable(usart_dev * dev)

Enable a serial port.

USART is enabled in single buffer transmission mode, multibuffer receiver mode, 8n1.

Serial port must have a baud rate configured to work properly.

Parameters:
  • dev -

    Serial port to enable.

See:

usart_set_baud_rate()

void usart_disable(usart_dev * dev)

Turn off a serial port.

Parameters:
  • dev -

    Serial port to be disabled

void usart_foreach(void(*)( usart_dev *dev) fn)

uint32 usart_tx(usart_dev * dev, const uint8 * buf, uint32 len)

Nonblocking USART transmit.

Parameters:
  • dev -

    Serial port to transmit over

  • buf -

    Buffer to transmit

  • len -

    Maximum number of bytes to transmit

Return:

Number of bytes transmitted

void usart_putudec(usart_dev * dev, uint32 val)

Transmit an unsigned integer to the specified serial port in decimal format.

This function blocks until the integer’s digits have been completely transmitted.

Parameters:
  • dev -

    Serial port to send on

  • val -

    Number to print

void usart_disable_all(void)

Disable all serial ports.

void usart_putc(usart_dev * dev, uint8 byte)

Transmit one character on a serial port.

This function blocks until the character has been successfully transmitted.

Parameters:
  • dev -

    Serial port to send on.

  • byte -

    Byte to transmit.

void usart_putstr(usart_dev * dev, const char * str)

Transmit a character string on a serial port.

This function blocks until str is completely transmitted.

Parameters:
  • dev -

    Serial port to send on

  • str -

    String to send

uint8 usart_getc(usart_dev * dev)

Read one character from a serial port.

It’s not safe to call this function if the serial port has no data available.

Parameters:
  • dev -

    Serial port to read from

Return:

byte read

See:

usart_data_available()

uint32 usart_data_available(usart_dev * dev)

Return the amount of data available in a serial port’s RX buffer.

Parameters:
  • dev -

    Serial port to check

Return:

Number of bytes in dev’s RX buffer.

void usart_reset_rx(usart_dev * dev)

Discard the contents of a serial port’s RX buffer.

Parameters:
  • dev -

    Serial port whose buffer to empty.

Variables
usart_dev * USART1

USART1 device.

usart_dev * USART2

USART2 device.

usart_dev * USART3

USART3 device.

class usart_reg_map

USART register map type.

Public Members
__io uint32 SR

Status register.

__io uint32 DR

Data register.

__io uint32 BRR

Baud rate register.

__io uint32 CR1

Control register 1.

__io uint32 CR2

Control register 2.

__io uint32 CR3

Control register 3.

__io uint32 GTPR

Guard time and prescaler register.

class usart_dev

USART device type.

Public Members
usart_reg_map * regs

Register map.

ring_buffer * rb

RX ring buffer.

uint32 max_baud

Maximum baud.

uint8 rx_buf[USART_RX_BUF_SIZE]

Actual RX buffer used by rb.

rcc_clk_id clk_id

RCC clock information.

nvic_irq_num irq_num

USART NVIC interrupt.