1.2 Organización del espacio de trabajo

En archivo de recursos tienes los recursos necesarios para realizar este laboratorio (lab1). A continuación se describe la estructura de carpetas y los archivos que encontrarás en el espacio de trabajo:

  • Código fuente: se organiza en módulos y categorías (capas), utilizando las carpetas siguientes:

    hal:

    Hardware Abstraction Layer: Módulos con funciones para acceder a los periféricos. En este caso el único módulo disponible es HAL_FM4_gpio, que incluye funciones para acceder a los puertos de entrada/salida digital.

    bsp:

    Board Support Package: Módulos con funciones para acceder al hardware disponible en el sistema de desarrollo (leds, pulsadores entrad/salida de audio …). En este caso el único módulo disponible es FM4_leds_sw, que incluye funciones para utilizar los leds y el pulsador disponible en la placa de desarrollo.

    src:

    Source: Aplicación implementada, incluye los ficheros con el código de la aplicación que implementa el proyecto.

    lab1
        ├───hal          # Hardware Abstraction Layer - Capa de abstracción de hardware
                       # Contiene drivers de bajo nivel para acceso directo al hardware
           ├───include  # Archivos de cabecera (.h) con definiciones de interfaces
                       # Aquí se encuentran los prototipos de funciones y constantes
           └───src      # Código fuente (.c) con implementaciones de funciones HAL
                        # Contiene el código que interactúa directamente con registros
        ├───bsp          # Board Support Package - Paquete de soporte de placa
                       # Proporciona API para dispositivos específicos de la placa
           ├───include  # Cabeceras de la capa BSP con definiciones de interfaces
                       # Define constantes específicas de la placa (pines, LEDs)
           └───src      # Implementación de funciones de la capa BSP
                        # Utiliza HAL para implementar funcionalidades de más alto nivel
        ├───src          # Código fuente de la aplicación principal
                        # Aquí se encuentra la función de entrada main()
              ...
    
  • Directorio de compilación: aquí se ubica el proyecto de la herramienta de desarrollo (IDE) utilizada (keil en este caso, podría ser IAR, gcc …)

    lab1
        ...
        ├───build_Keil # Proyecto Keil
           ├───lab1.uvprojx # Proyecto de Keil
           └───lab1.uvoptx  # Opciones del proyecto
        ...
    
  • Documentación. Directorio con la documentación asociada al proyecto, se completa con el archivo Readme.md que incluye una breve descripción del proyecto y otra información relevante.

    lab1
        ...
        ├───_doc       # Documentación
        └───Readme.md  # Descripción del proyecto.
    

    La documentación de las funciones incluidas en los módulos hal, bsp y shared, está disponible en formato HTML generada con doxygen:

Explora el espacio de trabajo

Descarga y descomprime el archivo de recursos en tu espacio de trabajo. Verifica que la estructura de carpetas es correcta y que contiene los archivos necesarios para la práctica.

En los archivos de cabecera (.h) de los módulos encontraras los prototipos de las funciones y otros elementos necesarios para su uso. Cada prototipo se acompaña de un comentario que describe su funcionalidad y uso.

Puedes utilizar notepad++ u otro editor de texto para explorar los archivos de cabecera (.h) y código fuente (.c). Si utilizas notepad++ abre la carpeta del proyecto como espacio de trabajo File ‣ Open Folder as Workspace….

Averigua la funcionalidad y uso de las funciones siguientes:

  • En el módulo hal_FM4_gpio:

    • GPIO_ChannelMode()

    • GPIO_ChannelWrite()

  • En el módulo FM4_leds_sw:

    • LedsSwInit()

    • LedON()

    • LedOFF()

    • LedRGB()

    • Sw2Read()

Fíjate en los tipos de los argumentos, ¿qué valores pueden tomar variables de tipo Leds_t , GpioChannel_t, GpioDir_t o rgb_color_t?