Bird
Raised Fist0
Embedded Cprogramming~10 mins

UART protocol fundamentals in Embedded C - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to initialize UART baud rate register.

Embedded C
UART_BAUD_REG = [1];
Drag options to blanks, or click blank then click option'
A103
B9600
C115200
D0xFF
Attempts:
3 left
💡 Hint
Common Mistakes
Using baud rate number directly instead of register value.
2fill in blank
medium

Complete the code to enable UART transmitter.

Embedded C
UART_CTRL_REG |= [1];
Drag options to blanks, or click blank then click option'
A0x08
B0x04
C0x10
D0x01
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing transmitter enable with receiver enable bits.
3fill in blank
hard

Fix the error in the UART receive function to correctly check data ready flag.

Embedded C
if (UART_STATUS_REG & [1]) {
    received_data = UART_DATA_REG;
}
Drag options to blanks, or click blank then click option'
A0x20
B0x80
C0x40
D0x10
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong status flag bit causing missed data reception.
4fill in blank
hard

Fill both blanks to create a UART transmit function that waits until ready and sends data.

Embedded C
while (!(UART_STATUS_REG & [1])) {}
UART_DATA_REG = [2];
Drag options to blanks, or click blank then click option'
A0x20
Bdata
C0x80
D0x40
Attempts:
3 left
💡 Hint
Common Mistakes
Waiting on wrong flag or writing wrong variable to data register.
5fill in blank
hard

Fill all three blanks to create a UART initialization function setting baud rate, enabling transmitter and receiver.

Embedded C
void UART_Init() {
    UART_BAUD_REG = [1];
    UART_CTRL_REG = [2] | [3];
}
Drag options to blanks, or click blank then click option'
A103
B0x04
C0x08
D9600
Attempts:
3 left
💡 Hint
Common Mistakes
Using baud rate number directly, forgetting to enable both transmitter and receiver.

Practice

(1/5)
1. What does UART stand for in embedded systems communication?
easy
A. Universal Analog Radio Transmitter
B. Universal Automatic Register Transfer
C. Unified Asynchronous Remote Terminal
D. Universal Asynchronous Receiver/Transmitter

Solution

  1. Step 1: Understand UART acronym

    UART is a communication protocol used in embedded systems for serial communication.
  2. Step 2: Match full form

    UART stands for Universal Asynchronous Receiver/Transmitter, describing its function.
  3. Final Answer:

    Universal Asynchronous Receiver/Transmitter -> Option D
  4. Quick Check:

    UART = Universal Asynchronous Receiver/Transmitter [OK]
Hint: Remember UART is about asynchronous serial communication [OK]
Common Mistakes:
  • Confusing UART with synchronous protocols
  • Mixing up the acronym words
  • Thinking UART is analog communication
2. Which of the following is the correct way to initialize UART in embedded C?
easy
A. uart_init(9600);
B. UART_Init(baudrate=9600);
C. uartStart(9600);
D. init_uart(9600);

Solution

  1. Step 1: Identify common UART init function

    In embedded C, uart_init with baud rate parameter is a common initialization call.
  2. Step 2: Check syntax correctness

    uart_init(9600); uses correct function name and parameter style without extra keywords.
  3. Final Answer:

    uart_init(9600); -> Option A
  4. Quick Check:

    Correct UART init syntax = uart_init(9600); [OK]
Hint: Look for simple function call with baud rate only [OK]
Common Mistakes:
  • Using incorrect function names
  • Adding parameter names inside call
  • Using camelCase instead of snake_case
3. What will be the output of this UART send code snippet?
uart_init(9600);
uart_send_char('A');
uart_send_char('B');
medium
A. BA
B. A B
C. AB
D. Error: uart_send_char undefined

Solution

  1. Step 1: Initialize UART at 9600 baud

    The uart_init(9600) sets baud rate for communication.
  2. Step 2: Send characters in order

    uart_send_char('A') sends 'A', then uart_send_char('B') sends 'B' sequentially.
  3. Final Answer:

    AB -> Option C
  4. Quick Check:

    Characters sent in order = AB [OK]
Hint: Characters send in call order, no spaces added [OK]
Common Mistakes:
  • Assuming characters reverse order
  • Expecting spaces between characters
  • Thinking uart_send_char is undefined
4. Identify the error in this UART initialization code:
void setup() {
  uart_init(115200);
  uart_init(9600);
}
medium
A. uart_init requires no parameters
B. Multiple uart_init calls cause baud rate conflict
C. Function name should be UART_Init
D. No error, code is correct

Solution

  1. Step 1: Review uart_init calls

    Two uart_init calls with different baud rates cause conflict in configuration.
  2. Step 2: Understand UART config rules

    UART baud rate must be set once before communication; multiple calls overwrite settings.
  3. Final Answer:

    Multiple uart_init calls cause baud rate conflict -> Option B
  4. Quick Check:

    Multiple init calls cause conflict = A [OK]
Hint: Only one uart_init call needed to set baud rate [OK]
Common Mistakes:
  • Thinking multiple init calls are allowed
  • Assuming uart_init has no parameters
  • Ignoring case sensitivity in function names
5. You want to send the string "HELLO" over UART. Which code snippet correctly sends each character one by one?
hard
A. for(int i=0; i<5; i++) uart_send_char("HELLO"[i]);
B. for(int i=0; i<5; i++) uart_send_char('H' + i);
C. for(int i=0; i<5; i++) uart_send_char('HELLO'[i]);
D. for(int i=0; i<5; i++) uart_send_char("HELLO" + i);

Solution

  1. Step 1: Understand string indexing in C

    In C, single quotes ' ' denote characters, double quotes \" \" denote strings (char arrays).
  2. Step 2: Check each option for correct character access

    for(int i=0; i<5; i++) uart_send_char(\"HELLO\"[i]); correctly indexes the string literal to access each character 'H','E','L','L','O'.
  3. Final Answer:

    for(int i=0; i<5; i++) uart_send_char("HELLO"[i]); -> Option A
  4. Quick Check:

    Correct string indexing uses double quotes \"HELLO\"[i] [OK]
Hint: Use double quotes for string literal indexing in C [OK]
Common Mistakes:
  • Using single quotes for multi-character string literals
  • Adding integers to characters ('H' + i sends HIJKL)
  • Using pointer arithmetic without dereferencing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard