diff options
Diffstat (limited to '02-usart/include/core/usart.h')
-rw-r--r-- | 02-usart/include/core/usart.h | 196 |
1 files changed, 87 insertions, 109 deletions
diff --git a/02-usart/include/core/usart.h b/02-usart/include/core/usart.h index 9ed6dbb..667b931 100644 --- a/02-usart/include/core/usart.h +++ b/02-usart/include/core/usart.h @@ -23,63 +23,56 @@ typedef enum { typedef struct { /* USART configuration registers 0x04 - 0x0c. */ - union { - __IO uint32_t c_r1; - struct { - bits_t ue:1; /* UART enable */ - bits_t uesm:1; /* UART enabled in stop mode. */ - bits_t re:1; /* reciever enabled. */ - bits_t te:1; /* transmitter enabled. */ - bits_t idleie:1; /* Idle interrupt enabled. */ - bits_t rxneie:1; /* RXNEIE RXNE interrupt enable. */ - bits_t tcie:1; - bits_t txeie:1; - bits_t peie:1; - bits_t ps:1; - bits_t pce:1; - bits_t wake:1; - bits_t m0:1; - bits_t mme:1; - bits_t cmie:1; - bits_t over8:1; - bits_t dedt:4; - bits_t deat:4; - bits_t rtoie:1; - bits_t eobie:1; - bits_t m1:1; - bits_t reserved:3; - } PACKED c1_bf; /* c1_bf = c1 bit field */ - }; /* USART Control Register 1. */ +#define usart_ue (1 << 0) /* UART enable */ +#define usart_uesm (1 << 1) /* UART enabled in stop mode. */ +#define usart_re (1 << 2) /* reciever enabled. */ +#define usart_te (1 << 3) /* transmitter enabled. */ +#define usart_idleie (1 << 4) /* Idle interrupt enabled. */ +#define usart_rxneie (1 << 5) /* RXNEIE RXNE interrupt enable. */ +#define usart_tcie (1 << 6) +#define usart_txeie (1 << 7) +#define usart_peie (1 << 8) +#define usart_ps (1 << 9) +#define usart_pce (1 << 10) +#define usart_wake (1 << 11) +#define usart_m0 (1 << 12) +#define usart_mme (1 << 13) +#define usart_cmie (1 << 14) +#define usart_over8 (1 << 15) +#define usart_dedt (0xF << 16) +#define usart_deat (0xF << 21) +#define usart_rtoie (1 << 26) +#define usart_eobie (1 << 27) +#define usart_m1 (1 << 28) + __IO uint32_t c_r1; __IO uint32_t c_r2; - union { - __IO uint32_t c_r3; - struct { - bits_t eie:1; // Error interrupt enable. - bits_t iren:1; // IrDA mode enabled - bits_t irlp:1; // IrDA low power - bits_t hdsel:1; // Half duplex selection - bits_t nack:1; // Smartcard NACK enable - bits_t scen:1; // Smartocard mode enable - bits_t dmar:1; // DMA enable reciever - bits_t dmat:1; // DMA enable transmitter - bits_t rtse:1; // RTS enable - bits_t ctse:1; // CTS enable - bits_t ctsie:1; // CTS interrupt enable - bits_t onebit:1; // One sample bit method enable - bits_t ovrdis:1; // Overrun disable - bits_t ddre:1; // DMA Disable on reception error - bits_t dem:1; // Driver enable mode - bits_t dep:1; // Driver enable polarity selection - bits_t reserved0:1; - bits_t scarcnt:3; // Smartcard auto-retry count. - bits_t wus:2; // Wakeup from STOP mode interrept flag selection - bits_t wufie:1; // Wakeup from STOP mode interrup enable - bits_t ucesm:1; // USART clock enable in STOP mode. - bits_t tcbgtie:1; // Transmission complete before guard time interrupt - bits_t reserved1:7; - } PACKED c3_bf; - }; + +#define usart_eie (1 << 0) // Error interrupt enable. +#define usart_iren (1 << 1) // IrDA mode enabled +#define usart_irlp (1 << 2) // IrDA low power +#define usart_hdsel (1 << 3) // Half duplex selection +#define usart_nack (1 << 4) // Smartcard NACK enable +#define usart_scen (1 << 5) // Smartocard mode enable +#define usart_dmar (1 << 6) // DMA enable reciever +#define usart_dmat (1 << 7) // DMA enable transmitter +#define usart_rtse (1 << 8) // RTS enable +#define usart_ctse (1 << 9) // CTS enable +#define usart_ctsie (1 << 10) // CTS interrupt enable +#define usart_onebit (1 << 11) // One sample bit method enable +#define usart_ovrdis (1 << 12) // Overrun disable +#define usart_ddre (1 << 13) // DMA Disable on reception error +#define usart_dem (1 << 14) // Driver enable mode +#define usart_dep (1 << 15) // Driver enable polarity selection +#define usart_scarcnt0 (1 << 17) +#define usart_scarcnt1 (1 << 18) +#define usart_scarcnt2 (1 << 19) +#define usart_wus0 (1 << 20) // Wakeup from STOP mode interrept flag selection +#define usart_wus1 (1 << 21) // Wakeup from STOP mode interrept flag selection +#define usart_wufie (1 << 22) // Wakeup from STOP mode interrup enable +#define usart_ucesm (1 << 23) // USART clock enable in STOP mode. +#define usart_tcbgtie (1 << 24) // Transmission complete before guard time interrupt + __IO uint32_t c_r3; /* USART baud rate register. */ uint32_t br_r; @@ -88,60 +81,45 @@ typedef struct { uint32_t rq_r; /* USART ISR register. Offset = 0x1c*/ - union { - __IO uint32_t is_r; /* Interrupt service register. */ - struct { - bits_t pe:1; // Parity error - bits_t fe:1; // Framing error - bits_t nf:1; // START bit noise detection flag. - bits_t ore:1; // Overrun error - bits_t dlie:1; // Idle line detected - bits_t rxne:1; // Read data register not empty - bits_t tc:1; // Transmission complete - bits_t txe:1; // Transmit data register empty - bits_t lbdf:1; // LIN break detection flag - bits_t ctsif:1; // CTS interrupt flag - bits_t cts:1; // CTS flag. - bits_t rtof:1; // Receiever timeout - bits_t eobf:1; // End of block flag - bits_t reserved0:1; - bits_t abre:1; // Auto baud rate error - bits_t abrf:1; // Auto baud rate flag - bits_t busy:1; // Busy flag - bits_t cmf:1; // Character match flag - bits_t sbkf:1; // send break flag - bits_t rwu:1; // receiver wakeup frlom mute mode. - bits_t wuf:1; // Wakeup from stop mode flag - bits_t teack:1; // Transmit enable acknowledge flag. - bits_t reack:1; // Receieve enable acknowledge flag. - bits_t reserved1:2; - bits_t tcbgt:1; // Transmission completer before guard time completion. - bits_t reserved2:6; - } PACKED is_bf; /* Interrupt servite bit field. */ - }; - union { - __IO uint32_t ic_r; - struct { - bits_t pecf:1; // Parity error clear flag - bits_t fecf:1; // Framing error clear flag - bits_t ncf:1; // Noise detected clear flag - bits_t orecf:1; // Overrun error clear flag - bits_t idlecf:1; // Idle line detected clear flag - bits_t reserved0:1; - bits_t tccf:1; // Transmission complete clear flag - bits_t tcbgtcf:1; // Transmission completed before guard time clear flag - bits_t lbdcf:1; // LIN break detection clear flag - bits_t ctscf:1; // CTS clear flag - bits_t reserved1:1; - bits_t rtocf:1; // Receiver timeout clear flag - bits_t eobcf:1; // End of block clear flag - bits_t reserved2:4; - bits_t cmcf:1; // Character match clear flag - bits_t reserved3:2; // Character match clear flag - bits_t wucf:1; // Wakeup from Stop mode clear flag. - bits_t reserved4:11; - } PACKED ic_bf; - }; +#define usart_pe (1 << 0) // Parity error +#define usart_fe (1 << 1) // Framing error +#define usart_nf (1 << 2) // START bit noise detection flag. +#define usart_ore (1 << 3) // Overrun error +#define usart_dlie (1 << 4) // Idle line detected +#define usart_rxne (1 << 5) // Read data register not empty +#define usart_tc (1 << 6) // Transmission complete +#define usart_txe (1 << 7) // Transmit data register empty +#define usart_lbdf (1 << 8) // LIN break detection flag +#define usart_ctsif (1 << 9) // CTS interrupt flag +#define usart_cts (1 << 10) // CTS flag. +#define usart_rtof (1 << 11) // Receiever timeout +#define usart_eobf (1 << 12) // End of block flag +#define usart_abre (1 << 14) // Auto baud rate error +#define usart_abrf (1 << 15) // Auto baud rate flag +#define usart_busy (1 << 16) // Busy flag +#define usart_cmf (1 << 17) // Character match flag +#define usart_sbkf (1 << 18) // send break flag +#define usart_rwu (1 << 19) // receiver wakeup frlom mute mode. +#define usart_wuf (1 << 20) // Wakeup from stop mode flag +#define usart_teack (1 << 21) // Transmit enable acknowledge flag. +#define usart_reack (1 << 22) // Receieve enable acknowledge flag. +#define usart_tcbgt (1 << 25) // Transmission completer before guard time completion. + __IO uint32_t is_r; /* Interrupt service register. */ + +#define usart_pecf (1 << 0) // Parity error clear flag +#define usart_fecf (1 << 1) // Framing error clear flag +#define usart_ncf (1 << 2) // Noise detected clear flag +#define usart_orecf (1 << 3) // Overrun error clear flag +#define usart_idlecf (1 << 4) // Idle line detected clear flag +#define usart_tccf (1 << 6) // Transmission complete clear flag +#define usart_tcbgtcf (1 << 7) // Transmission completed before guard time clear flag +#define usart_lbdcf (1 << 8) // LIN break detection clear flag +#define usart_ctscf (1 << 9) // CTS clear flag +#define usart_rtocf (1 << 11) // Receiver timeout clear flag +#define usart_eobcf (1 << 12) // End of block clear flag +#define usart_cmcf (1 << 17) // Character match clear flag +#define usart_wucf (1 << 20) // Wakeup from Stop mode clear flag. + __IO uint32_t ic_r; uint32_t rd_r; uint32_t td_r; } usart_t; |