51#if defined(USE_HAL_DRIVER)
57# include "stm32h7xx_hal.h"
62# ifndef HAL_ADC_MODULE_ENABLED
63struct ADC_HandleTypeDef;
65# ifndef HAL_I2C_MODULE_ENABLED
66struct I2C_HandleTypeDef;
68# ifndef HAL_SPI_MODULE_ENABLED
69struct SPI_HandleTypeDef;
71# ifndef HAL_TIM_MODULE_ENABLED
72struct TIM_HandleTypeDef;
74# ifndef HAL_UART_MODULE_ENABLED
77# ifndef HAL_CAN_MODULE_ENABLED
78struct CAN_HandleTypeDef;
80# ifndef HAL_FDCAN_MODULE_ENABLED
81struct FDCAN_HandleTypeDef;
83# ifndef HAL_DAC_MODULE_ENABLED
84struct DAC_HandleTypeDef;
89struct ADC_HandleTypeDef;
90struct I2C_HandleTypeDef;
91struct SPI_HandleTypeDef;
92struct TIM_HandleTypeDef;
94struct CAN_HandleTypeDef;
95struct FDCAN_HandleTypeDef;
96struct DAC_HandleTypeDef;
97struct DMA_HandleTypeDef;
197 A = 0,
B = 1,
C = 2,
D = 3,
E = 4,
198 F = 5,
G = 6,
H = 7,
I = 8,
J = 9,
K = 10
303 bool dma =
false) noexcept
353 bool dma =
false) noexcept
437 hf_u32_t timeout_ms = 1000) noexcept
520 vref_v(
hf::stm32::kAdcDefaultVrefV),
602 switch (raw_status) {
613 return raw_status == 0;
Platform-agnostic hardware type definitions for the HardFOC system.
uint32_t hf_u32_t
Platform-agnostic 32-bit unsigned integer type.
Definition HardwareTypes.h:52
uint8_t hf_u8_t
Platform-agnostic 8-bit unsigned integer type.
Definition HardwareTypes.h:40
hf_i32_t hf_pin_num_t
Platform-agnostic GPIO pin number type.
Definition HardwareTypes.h:99
uint64_t hf_u64_t
Platform-agnostic 64-bit unsigned integer type.
Definition HardwareTypes.h:58
uint16_t hf_u16_t
Platform-agnostic 16-bit unsigned integer type.
Definition HardwareTypes.h:46
hf_stm32_pwm_channel_t
PWM channel identifier (maps to TIM_CHANNEL_1..4)
Definition StmTypes.h:472
@ CHANNEL_2
TIM_CHANNEL_2.
@ CHANNEL_3
TIM_CHANNEL_3.
@ CHANNEL_1
TIM_CHANNEL_1.
@ CHANNEL_4
TIM_CHANNEL_4.
hf_stm32_can_type_t
CAN bus type selection.
Definition StmTypes.h:449
@ FDCAN
Flexible Data-rate CAN (STM32G4/H7/U5)
@ BXCAN
Basic Extended CAN (STM32F1/F2/F4)
hf_stm32_adc_resolution_t
ADC resolution.
Definition StmTypes.h:501
@ BITS_14
STM32H7/G4 only.
hf_stm32_uart_stop_bits_t
UART stop bits.
Definition StmTypes.h:416
hf_stm32_uart_parity_t
UART parity.
Definition StmTypes.h:409
hf_stm32_i2c_addr_mode_t
I2C address mode.
Definition StmTypes.h:286
@ ADDR_10BIT
10-bit addressing
@ ADDR_7BIT
7-bit addressing
hf_stm32_uart_data_bits_t
UART data bits.
Definition StmTypes.h:402
hf_gpio_drive_cap_t
STM32 GPIO output drive strength (subset aligned with EspTypes_GPIO).
Definition StmTypes.h:103
@ HF_GPIO_DRIVE_CAP_MEDIUM
@ HF_GPIO_DRIVE_CAP_STRONG
@ HF_GPIO_DRIVE_CAP_STRONGEST
hf_stm32_spi_mode_t
SPI mode (CPOL/CPHA)
Definition StmTypes.h:335
struct __UART_HandleTypeDef UART_HandleTypeDef
Definition StmUart.h:22
constexpr hf_pin_num_t PD2
Definition StmTypes.h:276
constexpr hf_pin_num_t PB8
Definition StmTypes.h:248
constexpr hf_pin_num_t PB3
Definition StmTypes.h:243
constexpr hf_pin_num_t PA1
Definition StmTypes.h:224
constexpr hf_pin_num_t PA6
Definition StmTypes.h:229
constexpr hf_pin_num_t PC9
Definition StmTypes.h:266
constexpr hf_pin_num_t PB4
Definition StmTypes.h:244
constexpr hf_pin_num_t PC5
Definition StmTypes.h:262
constexpr hf_pin_num_t PC7
Definition StmTypes.h:264
constexpr hf_pin_num_t PC1
Definition StmTypes.h:258
constexpr hf_pin_num_t PB1
Definition StmTypes.h:241
constexpr hf_pin_num_t PD0
Definition StmTypes.h:274
constexpr hf_pin_num_t PB6
Definition StmTypes.h:246
constexpr hf_pin_num_t PB11
Definition StmTypes.h:251
constexpr hf_pin_num_t PC8
Definition StmTypes.h:265
constexpr hf_pin_num_t PC2
Definition StmTypes.h:259
constexpr hf_pin_num_t PB5
Definition StmTypes.h:245
constexpr hf_pin_num_t PA8
Definition StmTypes.h:231
constexpr hf_pin_num_t PB7
Definition StmTypes.h:247
constexpr hf_pin_num_t PB0
Definition StmTypes.h:240
constexpr hf_pin_num_t PA4
Definition StmTypes.h:227
constexpr hf_pin_num_t PB15
Definition StmTypes.h:255
constexpr hf_pin_num_t PA14
Definition StmTypes.h:237
constexpr hf_pin_num_t PC11
Definition StmTypes.h:268
constexpr hf_pin_num_t PC12
Definition StmTypes.h:269
constexpr hf_pin_num_t PA9
Definition StmTypes.h:232
constexpr hf_pin_num_t PA0
Definition StmTypes.h:223
constexpr hf_pin_num_t PA12
Definition StmTypes.h:235
constexpr hf_pin_num_t PB9
Definition StmTypes.h:249
constexpr hf_pin_num_t PB13
Definition StmTypes.h:253
constexpr hf_pin_num_t PB10
Definition StmTypes.h:250
constexpr hf_pin_num_t PB2
Definition StmTypes.h:242
constexpr hf_pin_num_t PC10
Definition StmTypes.h:267
constexpr hf_pin_num_t PA2
Definition StmTypes.h:225
constexpr hf_pin_num_t PA3
Definition StmTypes.h:226
constexpr hf_pin_num_t PA11
Definition StmTypes.h:234
constexpr hf_pin_num_t PC13
Definition StmTypes.h:270
constexpr hf_pin_num_t PA5
Definition StmTypes.h:228
constexpr hf_pin_num_t PB14
Definition StmTypes.h:254
constexpr hf_pin_num_t PC14
Definition StmTypes.h:271
constexpr hf_pin_num_t PA10
Definition StmTypes.h:233
constexpr hf_pin_num_t PB12
Definition StmTypes.h:252
constexpr hf_pin_num_t PA7
Definition StmTypes.h:230
constexpr hf_pin_num_t PC0
Definition StmTypes.h:257
constexpr hf_pin_num_t PC15
Definition StmTypes.h:272
constexpr hf_pin_num_t PC3
Definition StmTypes.h:260
constexpr hf_pin_num_t PA13
Definition StmTypes.h:236
constexpr hf_pin_num_t PD1
Definition StmTypes.h:275
constexpr hf_pin_num_t PA15
Definition StmTypes.h:238
constexpr hf_pin_num_t PC4
Definition StmTypes.h:261
constexpr hf_pin_num_t PC6
Definition StmTypes.h:263
Definition StmTypes.h:114
static constexpr float kAdcDefaultVrefV
ADC reference voltage (V) — most STM32 boards.
Definition StmTypes.h:133
static constexpr float kTempSensorMaxC
Definition StmTypes.h:175
static constexpr hf_u16_t kMaxGpioPins
Maximum total GPIO pins (ports * pins_per_port)
Definition StmTypes.h:123
static constexpr hf_u8_t kAdcDefaultResolutionBits
Definition StmTypes.h:130
static constexpr hf_u16_t kCanDefaultQueueSize
Definition StmTypes.h:166
static constexpr hf_u32_t kCanMaxBaudRate
CAN limits.
Definition StmTypes.h:164
static constexpr hf_u16_t kI2cMaxTransferBytes
Definition StmTypes.h:140
static constexpr hf_u8_t kAdcMaxChannels
ADC maximum channels (typical STM32F4/H7)
Definition StmTypes.h:126
static constexpr hf_u32_t kI2cFastFreqHz
Definition StmTypes.h:138
static constexpr hf_u32_t kPwmMaxFreqHz
PWM limits.
Definition StmTypes.h:158
static constexpr hf_u32_t kI2cStandardFreqHz
Definition StmTypes.h:137
static constexpr hf_u32_t kLoggerMaxMessageLen
Logger.
Definition StmTypes.h:179
constexpr bool IsHalOk(hf_u32_t raw_status) noexcept
Check if a raw HAL status indicates success.
Definition StmTypes.h:612
constexpr hf_u8_t DecodePinPort(hf_pin_num_t pin) noexcept
Decode hf_pin_num_t → port index.
Definition StmTypes.h:207
static constexpr hf_u32_t kSpiMaxFreqHz
SPI limits.
Definition StmTypes.h:143
static constexpr size_t kNvsDefaultSectorSize
Definition StmTypes.h:171
constexpr hf_pin_num_t EncodePin(GpioPort port, hf_u8_t pin) noexcept
Encode (port, pin) → hf_pin_num_t.
Definition StmTypes.h:202
static constexpr hf_u16_t kSpiMaxTransferBytes
Definition StmTypes.h:145
static constexpr hf_u32_t kUartDefaultBaudRate
Definition StmTypes.h:149
GpioPort
GPIO port index (A=0, B=1, ... K=10)
Definition StmTypes.h:196
static constexpr float kTempSensorTypAccuracyC
Definition StmTypes.h:176
static constexpr hf_u16_t kPwmMaxResolution
Definition StmTypes.h:160
static constexpr hf_u32_t kLoggerDefaultBufferSize
Definition StmTypes.h:180
static constexpr size_t kNvsMaxKeyLength
Flash/NVS limits.
Definition StmTypes.h:169
static constexpr hf_u8_t kMaxGpioPorts
Maximum GPIO ports (A..K = 11 on largest STM32H7)
Definition StmTypes.h:117
static constexpr hf_u8_t kAdcMaxResolutionBits
ADC maximum resolution (bits)
Definition StmTypes.h:129
constexpr HalStatus ToHalStatus(hf_u32_t raw_status) noexcept
Convert raw HAL_StatusTypeDef to our enum.
Definition StmTypes.h:601
constexpr hf_u8_t DecodePinIndex(hf_pin_num_t pin) noexcept
Decode hf_pin_num_t → pin within port (0-15)
Definition StmTypes.h:212
HalStatus
STM32 HAL status codes (mirrors HAL_StatusTypeDef without HAL include)
Definition StmTypes.h:593
constexpr hf_u16_t DecodePinMask(hf_pin_num_t pin) noexcept
Decode hf_pin_num_t → STM32 HAL pin mask (GPIO_PIN_0 .. GPIO_PIN_15)
Definition StmTypes.h:217
static constexpr hf_u32_t kI2cFastPlusFreqHz
Definition StmTypes.h:139
static constexpr hf_u8_t kPinsPerPort
Maximum pins per GPIO port.
Definition StmTypes.h:120
static constexpr hf_u64_t kTimerMinPeriodUs
Timer limits (in microseconds)
Definition StmTypes.h:153
static constexpr hf_u32_t kI2cMaxFreqHz
I2C limits.
Definition StmTypes.h:136
static constexpr float kTempSensorMinC
Temperature sensor.
Definition StmTypes.h:174
static constexpr hf_u32_t kCanFdMaxBaudRate
Definition StmTypes.h:165
static constexpr hf_u32_t kSpiDefaultFreqHz
Definition StmTypes.h:144
static constexpr hf_u64_t kTimerResolutionUs
Definition StmTypes.h:155
static constexpr hf_u32_t kPwmMinFreqHz
Definition StmTypes.h:159
static constexpr hf_u64_t kTimerMaxPeriodUs
Definition StmTypes.h:154
static constexpr hf_u16_t kUartDefaultBufferSize
Definition StmTypes.h:150
static constexpr hf_u32_t kUartMaxBaudRate
UART limits.
Definition StmTypes.h:148
static constexpr hf_u8_t kPwmMaxChannelsPerTimer
Definition StmTypes.h:161
static constexpr size_t kNvsMaxValueSize
Definition StmTypes.h:170
Definition StmTypes.h:114
Platform-agnostic I2C bus configuration for STM32. Users pass their CubeMX-generated I2C_HandleTypeDe...
Definition StmTypes.h:293
hf_i2c_bus_config_t(I2C_HandleTypeDef *handle, hf_u32_t timeout_ms=1000, bool dma=false) noexcept
Definition StmTypes.h:301
bool use_dma
Use DMA transfers when available.
Definition StmTypes.h:296
I2C_HandleTypeDef * hal_handle
Pointer to CubeMX-generated I2C handle.
Definition StmTypes.h:294
hf_u32_t default_timeout_ms
Default timeout for all operations (ms)
Definition StmTypes.h:295
hf_i2c_bus_config_t() noexcept
Definition StmTypes.h:298
I2C device configuration structure.
Definition EspTypes_I2C.h:225
uint16_t device_address
7-bit or 10-bit device address
Definition EspTypes_I2C.h:226
hf_stm32_i2c_addr_mode_t addr_mode
Address mode.
Definition StmTypes.h:310
bool combined_read
Definition StmTypes.h:320
hf_u32_t scl_speed_hz
SCL clock speed (informational)
Definition StmTypes.h:311
uint32_t scl_speed_hz
SCL clock frequency for this device.
Definition EspTypes_I2C.h:228
bool disable_ack_check
Disable ACK check for this device.
Definition EspTypes_I2C.h:230
hf_i2c_device_config_t() noexcept
Definition StmTypes.h:322
hf_u16_t device_address
7-bit or 10-bit address
Definition StmTypes.h:309
Platform-agnostic SPI bus configuration for STM32.
Definition EspTypes_SPI.h:150
hf_spi_bus_config_t() noexcept
Definition StmTypes.h:348
hf_timeout_ms_t timeout_ms
Default timeout for operations (ms)
Definition EspTypes_SPI.h:157
SPI_HandleTypeDef * hal_handle
Pointer to CubeMX-generated SPI handle.
Definition StmTypes.h:344
hf_u32_t default_timeout_ms
Default timeout (ms)
Definition StmTypes.h:345
bool use_dma
Use DMA transfers when available.
Definition StmTypes.h:346
hf_spi_bus_config_t(SPI_HandleTypeDef *handle, hf_u32_t timeout_ms=1000, bool dma=false) noexcept
Definition StmTypes.h:351
SPI device configuration for STM32.
Definition EspTypes_SPI.h:210
hf_u16_t cs_pin
CS GPIO pin mask (e.g., GPIO_PIN_4)
Definition StmTypes.h:375
hf_u8_t inter_data_idle_cycles
SCK idle cycles the master inserts between data frames (H7 SPI CFG2.MIDI, 0–15), applied per-transfer...
Definition StmTypes.h:389
bool cs_active_low
CS active low (default: true)
Definition StmTypes.h:376
GPIO_TypeDef * cs_port
CS GPIO port (e.g., GPIOA)
Definition StmTypes.h:374
hf_spi_mode_t mode
SPI mode (0-3)
Definition EspTypes_SPI.h:212
hf_stm32_spi_mode_t mode
CPOL/CPHA applied per-transfer by StmSpiBus.
Definition StmTypes.h:373
hf_spi_device_config_t() noexcept
Definition StmTypes.h:391
hf_pin_num_t cs_pin
CS pin (or -1 for software CS)
Definition EspTypes_SPI.h:213
hf_u32_t clock_speed_hz
Device clock speed (Hz)
Definition EspTypes_SPI.h:211
ADC configuration for STM32.
Definition StmTypes.h:511
hf_stm32_adc_resolution_t resolution
ADC resolution.
Definition StmTypes.h:513
ADC_HandleTypeDef * hal_handle
Pointer to CubeMX-generated ADC handle.
Definition StmTypes.h:512
hf_u8_t num_channels
Number of configured channels.
Definition StmTypes.h:515
hf_stm32_adc_config_t() noexcept
Definition StmTypes.h:517
hf_stm32_adc_config_t(ADC_HandleTypeDef *handle, hf_u8_t channels=1, float vref=hf::stm32::kAdcDefaultVrefV) noexcept
Definition StmTypes.h:523
float vref_v
Reference voltage (V)
Definition StmTypes.h:514
CAN configuration for STM32.
Definition StmTypes.h:455
hf_u32_t default_timeout_ms
Default timeout (ms)
Definition StmTypes.h:458
hf_stm32_can_config_t() noexcept
Definition StmTypes.h:462
bool silent_mode
Enable silent/listen-only mode.
Definition StmTypes.h:460
void * hal_handle
CAN_HandleTypeDef* or FDCAN_HandleTypeDef*.
Definition StmTypes.h:457
bool loopback_mode
Enable loopback for testing.
Definition StmTypes.h:459
hf_stm32_can_type_t can_type
CAN peripheral type.
Definition StmTypes.h:456
GPIO configuration for STM32 wrapping CubeMX port/pin.
Definition StmTypes.h:576
hf_stm32_gpio_config_t() noexcept
Definition StmTypes.h:580
GPIO_TypeDef * port
GPIO port pointer (GPIOA, GPIOB, etc.)
Definition StmTypes.h:577
hf_stm32_gpio_config_t(GPIO_TypeDef *gpio_port, hf_u16_t pin) noexcept
Definition StmTypes.h:582
hf_u16_t pin_mask
GPIO pin mask (GPIO_PIN_0..GPIO_PIN_15)
Definition StmTypes.h:578
Flash-based NVS configuration for STM32.
Definition StmTypes.h:537
hf_u32_t flash_size
Total NVS region size (bytes)
Definition StmTypes.h:539
hf_stm32_nvs_config_t() noexcept
Definition StmTypes.h:543
hf_u32_t sector_size
Flash sector/page size (bytes)
Definition StmTypes.h:540
hf_u8_t num_sectors
Number of sectors reserved for NVS.
Definition StmTypes.h:541
hf_stm32_nvs_config_t(hf_u32_t start_addr, hf_u32_t size, hf_u32_t sect_size=hf::stm32::kNvsDefaultSectorSize) noexcept
Definition StmTypes.h:547
hf_u32_t flash_start_address
Start address of NVS flash region.
Definition StmTypes.h:538
PWM configuration for STM32.
Definition StmTypes.h:480
hf_stm32_pwm_config_t() noexcept
Definition StmTypes.h:486
hf_stm32_pwm_config_t(TIM_HandleTypeDef *handle, hf_u8_t channels=1) noexcept
Definition StmTypes.h:490
hf_u16_t dead_time_ns
Dead-time for complementary pairs (ns)
Definition StmTypes.h:484
hf_u8_t num_channels
Number of active channels (1-4)
Definition StmTypes.h:482
bool complementary_output
Enable complementary outputs (TIMx_CHxN)
Definition StmTypes.h:483
TIM_HandleTypeDef * hal_handle
Pointer to CubeMX-generated TIM handle.
Definition StmTypes.h:481
Periodic timer configuration for STM32.
Definition StmTypes.h:559
TIM_HandleTypeDef * hal_handle
Pointer to CubeMX-generated TIM handle.
Definition StmTypes.h:560
hf_stm32_timer_config_t(TIM_HandleTypeDef *handle) noexcept
Definition StmTypes.h:567
hf_u32_t prescaler
Timer prescaler (0 = auto-compute)
Definition StmTypes.h:561
hf_stm32_timer_config_t() noexcept
Definition StmTypes.h:564
bool use_interrupt
Use timer update interrupt.
Definition StmTypes.h:562
Platform-agnostic UART configuration for STM32.
Definition StmTypes.h:422
bool use_dma_rx
Use DMA for RX.
Definition StmTypes.h:426
hf_u16_t tx_buffer_size
Transmit buffer size.
Definition StmTypes.h:428
hf_stm32_uart_config_t(UART_HandleTypeDef *handle, hf_u32_t timeout_ms=1000) noexcept
Definition StmTypes.h:436
hf_u16_t rx_buffer_size
Receive ring buffer size.
Definition StmTypes.h:427
hf_u32_t default_timeout_ms
Default timeout (ms)
Definition StmTypes.h:424
hf_stm32_uart_config_t() noexcept
Definition StmTypes.h:430
UART_HandleTypeDef * hal_handle
Pointer to CubeMX-generated UART handle.
Definition StmTypes.h:423
bool use_dma_tx
Use DMA for TX.
Definition StmTypes.h:425