es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enviando entrada a GPIOC.

Estoy intentando enviar una entrada al botón de presión (GPIOC 1<<13), sin embargo, recibo un error de que mi declaración es incorrecta. Esto es lo que intenté ejecutar:

HAL_UART_Transmit(GPIOC->IDR & (1<<13), (uint8_t*)"Hello World\r\n", 16, 100); // Imprime en el UART del depurador "Hello World"

y sigo recibiendo “expected statement before ‘)’ token”

Cualquier ayuda será agradecida.

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que hay un error de sintaxis en el código. La llamada a la función HAL_UART_Transmit tiene llaves desordenadas. Debes mover el paréntesis de cierre desde después de (1<<13) hasta el final del paréntesis de HAL_UART_Transmit. Aquí está el código corregido:

    HAL_UART_Transmit(&GPIOC->IDR, (uint8_t*)"Hello World\r\n", 16, 100); // Imprime en la UART del depurador "Hello World"
    

    Al pasar &GPIOC->IDR como primer argumento, estás pasando la dirección del registro de datos de entrada de GPIOC. Esta no es la forma correcta de escribir en el pin de entrada GPIOC 1<<13. Para escribir en este pin, deberías usar el registro GPIOC->BSRR. Aquí tienes un ejemplo de cómo establecer y borrar el pin GPIOC 1<<13:

    // Establecer el bit
    GPIOC->BSRR = (1 << 13);
    
    // Borrar el bit
    GPIOC->BSRR = (1 << (13 + 16));
    

    ¡Espero que esto te ayude!

Comments are closed.