#include <stdio.h> #include <stdbool.h> typedef struct{ unsigned char baudrate: 4; unsigned char tx_enable: 1; unsigned char rx_enable: 1; unsigned char tx_irq_en: 1; unsigned char rx_irq_en: 1; unsigned char parity_en: 1; unsigned char stop_bits: 1; unsigned char reserved: 22; }UART_ControlRegister_t; bool config_uart(UART_ControlRegister_t *ptr){ if(ptr == NULL) return false; ptr->baudrate = 9; ptr->tx_enable = 1; ptr->rx_enable = 1; ptr->tx_irq_en = 1; ptr->rx_irq_en = 0; ptr->parity_en = 1; ptr->stop_bits = 0; return true; } void check_uart(UART_ControlRegister_t *reg){ printf("baudrate = %u\n", reg->baudrate); printf("tx_enable = %u\n", reg->tx_enable); printf("rx_enable = %u\n", reg->rx_enable); printf("tx_irq_en = %u\n", reg->tx_irq_en); printf("rx_irq_en = %u\n", reg->rx_irq_en); printf("parity_en = %u\n", reg->parity_en); printf("stop_bits = %u", reg->stop_bits); } int main(){ UART_ControlRegister_t reg = {0}; if(config_uart(®) == true){ check_uart(®); } return 0; }
Test Cases
Test Results
Input
Expected Output
baudrate = 9 tx_enable = 1 rx_enable = 1 tx_irq_en = 1 rx_irq_en = 0 parity_en = 1 stop_bits = 0