0
0
Embedded Cprogramming~20 mins

Why GPIO is the foundation of embedded in Embedded C - Challenge Your Understanding

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
GPIO Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this GPIO pin toggle code?
Consider a microcontroller GPIO pin initially set to LOW (0). The following code toggles the pin state twice. What will be the final state printed?
Embedded C
#include <stdio.h>

int main() {
    int gpio_pin = 0; // LOW
    gpio_pin = !gpio_pin; // toggle once
    gpio_pin = !gpio_pin; // toggle twice
    printf("GPIO pin state: %d\n", gpio_pin);
    return 0;
}
AGPIO pin state: 2
BGPIO pin state: 1
CGPIO pin state: 0
DCompilation error
Attempts:
2 left
💡 Hint
Think about what toggling means: switching from 0 to 1 or 1 to 0.
🧠 Conceptual
intermediate
1:30remaining
Why is GPIO considered the foundation of embedded systems?
Which of the following best explains why GPIO pins are fundamental in embedded systems?
AGPIO pins provide power supply to the microcontroller.
BGPIO pins are used only for debugging and have no role in device control.
CGPIO pins store the program code for the microcontroller.
DGPIO pins allow the microcontroller to interact with the outside world by reading sensors and controlling devices.
Attempts:
2 left
💡 Hint
Think about how embedded devices sense and act in the real world.
🔧 Debug
advanced
2:30remaining
Identify the error in this GPIO initialization code
This code is supposed to configure a GPIO pin as output and set it HIGH. What is the error that will cause it to fail?
Embedded C
void gpio_init() {
    int pin = 5;
    // Configure pin 5 as output
    pin = 1;
    // Set pin 5 HIGH
    pin = 1;
}
APin number 5 cannot be used as output on any microcontroller.
BThe variable 'pin' is just an integer and does not configure hardware registers.
CThe code is missing a return statement.
DThe pin is set HIGH before configuring as output.
Attempts:
2 left
💡 Hint
Think about what 'pin = 1;' does in C code.
📝 Syntax
advanced
2:00remaining
Which option correctly sets GPIO pin 3 as input with pull-up resistor enabled?
Choose the correct C code snippet for configuring GPIO pin 3 as input with pull-up enabled on a generic microcontroller.
AGPIO_DIR &= ~(1 << 3); GPIO_PULLUP |= (1 << 3);
BGPIO_DIR |= (1 << 3); GPIO_PULLUP &= ~(1 << 3);
CGPIO_DIR = (1 << 3); GPIO_PULLUP = (1 << 3);
DGPIO_DIR &= (1 << 3); GPIO_PULLUP |= (1 << 3);
Attempts:
2 left
💡 Hint
Input pins are cleared in direction register; pull-up bits are set.
🚀 Application
expert
3:00remaining
How many GPIO pins are set HIGH after this code runs?
Given the following code snippet, how many GPIO pins will be set HIGH at the end?
Embedded C
#include <stdio.h>
#define NUM_PINS 4

int main() {
    unsigned int gpio_state = 0b0000;
    for (int i = 0; i < NUM_PINS; i++) {
        if (i % 2 == 0) {
            gpio_state |= (1 << i);
        } else {
            gpio_state &= ~(1 << i);
        }
    }
    int count = 0;
    for (int i = 0; i < NUM_PINS; i++) {
        if (gpio_state & (1 << i)) {
            count++;
        }
    }
    printf("Number of pins HIGH: %d\n", count);
    return 0;
}
A2
B3
C4
D1
Attempts:
2 left
💡 Hint
Check which pins (0 to 3) are set HIGH based on the condition i % 2 == 0.