STM32 Arduino Core

repository·main·Indexed 25 days ago

https://github.com/stm32duino/arduino_core_stm32

Arduino core support for STM32-based microcontrollers, enabling development within the Arduino IDE 2.x environment. Includes specialized libraries such as EEPROM for non-volatile storage, IWatchdog for Independent Watchdog (IWDG) CPU resets, an extended SPI library with hardware CS pin management and STM32Cube HAL handle access, and the SubGhz library for low-level control of the integrated radio module in STM32WL series microcontrollers.

Tokens
43.3K
Snippets
44
Records
276
Agent score
85%

What's inside arduino_core_stm32

  1. Overview of STM32CubeF0 HAL-LL Drivers

    main
    The stm32f0xx_hal_driver is an MCU component of the STM32CubeF0 embedded software package. It provides the HAL-LL Drivers (Hardware Abstraction Layer and Low-Layer drivers), which offer a set of APIs designed to maximize portability across the STM32 portfolio. This component is delivered individually to allow developers to select only the required software functions without the full monolithic MCU Package.
  2. Overview of STM32CubeU3 HAL-LL Drivers

    main
    The stm32u3xx_hal_driver is an MCU component of the STM32CubeU3 embedded software package. It provides the HAL-LL Drivers (Hardware Abstraction Layer and Low-Layer drivers), which serve as an abstraction layer to ensure maximized portability across the STM32 portfolio. This component is part of a larger ecosystem that includes CMSIS modules, BSP Drivers, and various middleware libraries (e.g., ThreadX, USBX, MbedTLS).
  3. Overview of STM32 USB Device MCU Middleware

    main

    The stm32_mw_usb_device is a middleware component provided by STMicroelectronics as part of the STM32Cube ecosystem. It provides the necessary software stack to implement USB Device functionality on STM32 microcontrollers. The middleware is divided into two primary functional modules:

    • Core module: Provides the standard peripheral control APIs and ensures compliance with the USB 2.0 standard. These APIs are required for all USB device applications.
    • Class module: Provides APIs for commonly supported USB device classes. These implementations follow USB 2.0 and specific class specifications and are used based on the desired device functionality (e.g., HID, CDC, MSC).
  4. Overview of STM32C5xx HAL Drivers

    main

    The STM32C5xx HAL (Hardware Abstraction Layer) and Low-Layer (LL) drivers provide a portable API layer designed to interact with application code, libraries, and stacks. This architecture allows middleware to implement functions without requiring deep knowledge of the underlying STM32 device, improving code reusability and portability across different STM32 families.

    Key characteristics of the HAL drivers include:

    • A generic, multi-instance API set.
    • Standardized driver structures, function names, and parameter names.
    • Full coverage of peripheral features through a rich set of APIs.
  5. Overview of STM32CubeL1 HAL-LL Drivers

    main
    The stm32l1xx_hal_driver is an MCU component that provides the Hardware Abstraction Layer (HAL) and Low-Layer (LL) drivers for the STM32L1 series. These drivers offer a set of APIs designed to maximize code portability across the STM32 portfolio. This component is part of the larger STM32CubeL1 embedded software package, which also includes CMSIS modules, BSP drivers, middleware (RTOS, USB, FatFS, etc.), and software projects.
  6. Overview of STM32CubeL4 CMSIS Device MCU Component

    main
    The cmsis_device_l4 is a specific MCU component of the STM32CubeL4 embedded software package. It provides the CMSIS device part, which includes the CMSIS modules corresponding to the ARM core implemented in STM32L4 products. This component is designed to be used individually, allowing developers to select only the required software functions rather than downloading the entire monolithic STM32CubeL4 MCU Package.
  7. Overview of STM32CubeC0 HAL Driver MCU Component

    main

    The stm32c0xx_hal_driver is an MCU component of the STM32CubeC0 embedded software package. It provides the HAL-LL Drivers (Hardware Abstraction Layer and Low-Layer drivers) for the STM32C0 series. These drivers offer a set of APIs designed to maximize portability across the STM32 portfolio.

    Key components of the broader STM32Cube ecosystem include:

    • CMSIS modules: Core and device modules for the ARM core.
    • HAL-LL drivers: Abstraction layers for hardware access.
    • BSP drivers: Board Support Package drivers for evaluation, demonstration, or Nucleo boards.
    • Middleware libraries: Such as LevelX, FileX, USBX, and OpenBootloader.
    • Software projects: Examples and demonstrations for various toolchains (EWARM, MDK-ARM, and STM32CubeIDE).
  8. Overview of STM32 Arduino Core architecture

    main

    The STM32 Arduino core provides support for STM32 MCUs in Arduino IDE 2.x. The porting is built upon several industry-standard layers:

    • STM32Cube MCU Packages: Includes the HAL (Hardware Abstraction Layer) for device portability, LL (Low-Layer) APIs for high-performance/optimized access, and CMSIS device definitions.
    • CMSIS (Cortex Microcontroller Software Interface Standard): A vendor-independent hardware abstraction layer for Cortex-M processors.
    • GNU Arm Embedded Toolchain: Provided via xPack tools, including arm-none-eabi-gcc and openocd for compilation and debugging.