No me queda claro si desea que el STM32 sea el receptor o el remitente, pero asumo el receptor.
Primero descubra primero cómo recibir el valor que desea recibir. Hay muchos ejemplos, ya que UART es el periférico más utilizado.
Suponga que tiene el byte almacenado desde UART en un byte en la SRAM de su STM32, puede usar un bucle simple para iterar sobre los bits.
for (int bit = 7; bit >= 0; bit--)
{
// Set GPIO 'bit' on or off
}
Para activar o desactivar un GPIO, averigüe cómo hacer esto, por ejemplo. en HAL debes usar HAL_GPIO_WritePin.
Puede conectar los LED con una resistencia a ocho pines y configurar el LED en consecuencia.
Para activar o desactivar el bit GPIO puede crear una matriz para guardar los números de puerto / pin, con un total de 8 elementos, donde cada elemento es el puerto / pin para ese bit, por ejemplo
GPIO_TypeDef gpio_ports
{
GPIOA, GPIOA, GPIOA, GPIOA, GPIOB, GPIOB, GPIOC, GPIOB
};
uint16_t gpio_pins
{
GPIO_PIN_0, GPIO_PIN_2, GPIO_PIN_0, GPIO_PIN_2,
GPIO_PIN_5, GPIO_PIN_1, GPIO_PIN_6, GPIO_PIN_4,
}
El bit 0 se asignará al pin A0 de GPIO, los bits 7 a B4.
Para establecer el uso de bits
for (int bit = 7; bit >= 0; bit--)
{
SetBit(bit, value & (1 << bit));
}
SetBit(int bit, int status)
{
HAL_GPIO_WritePin(gpio_ports[bit], gpio_pins[bit],
status > 0 ? GPIO_PIN_SET : GPIO_PIN_RESET);
}