#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;
}
Expected Output
baudrate = 9 tx_enable = 1 rx_enable = 1 tx_irq_en = 1 rx_irq_en = 0 parity_en = 1 stop_bits = 0