STM32 HAL/LL Skill
Overview
This skill provides expert-level support for STMicroelectronics STM32 microcontrollers, including HAL driver usage, Low-Level (LL) driver optimization, and STM32CubeMX integration.
Capabilities
STM32CubeMX Integration
- •Configuration file interpretation
- •Code generation customization
- •Pin and peripheral assignment
- •Clock tree configuration
- •Middleware integration
HAL Driver Usage
- •HAL initialization and configuration
- •Callback registration and handling
- •DMA integration with HAL
- •Interrupt mode operations
- •Polling mode operations
- •HAL timeout handling
Low-Level (LL) Drivers
- •LL driver optimization
- •Direct register access patterns
- •HAL to LL migration
- •Mixed HAL/LL usage
- •Performance-critical implementations
Clock Configuration
- •Clock tree setup and optimization
- •PLL configuration
- •Peripheral clock gating
- •Clock source selection
- •HSE/HSI/LSE/LSI configuration
DMA Configuration
- •DMA stream/channel selection
- •Circular and normal modes
- •Double buffer configuration
- •DMA interrupt handling
- •Memory-to-memory transfers
Peripheral Configuration
- •GPIO configuration and modes
- •Timer configuration (PWM, input capture)
- •ADC/DAC setup and calibration
- •Communication peripherals (UART, SPI, I2C)
- •USB device/host configuration
Power Management
- •Sleep and stop mode entry
- •Standby mode configuration
- •Low-power run mode
- •Wake-up source configuration
- •Voltage scaling
Target Processes
- •
bsp-development.js- STM32 BSP implementation - •
device-driver-development.js- STM32 driver development - •
dma-optimization.js- DMA configuration and tuning - •
low-power-design.js- STM32 power optimization - •
hardware-bring-up.js- STM32 board bring-up
Dependencies
- •STM32CubeMX
- •STM32 HAL/LL libraries
- •STM32CubeIDE (optional)
- •Device-specific firmware package
Usage Context
This skill is invoked when tasks require:
- •STM32 peripheral configuration
- •HAL/LL driver implementation
- •Clock tree optimization
- •DMA setup and tuning
- •Power mode configuration
Family Support
- •STM32F0, F1, F2, F3, F4, F7
- •STM32G0, G4
- •STM32H5, H7
- •STM32L0, L1, L4, L4+, L5
- •STM32U5
- •STM32WB, WL
Example Configurations
UART with DMA
c
huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; HAL_UART_Init(&huart1); HAL_UART_Receive_DMA(&huart1, rx_buffer, RX_SIZE);
LL GPIO Toggle
c
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_5); LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_5); LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_5);