51struct ADC_HandleTypeDef;
52struct I2C_HandleTypeDef;
53struct SPI_HandleTypeDef;
54struct TIM_HandleTypeDef;
55struct UART_HandleTypeDef;
56struct CAN_HandleTypeDef;
57struct FDCAN_HandleTypeDef;
58struct DAC_HandleTypeDef;
59struct DMA_HandleTypeDef;
153 A = 0,
B = 1,
C = 2,
D = 3,
E = 4,
154 F = 5,
G = 6,
H = 7,
I = 8,
J = 9,
K = 10
259 bool dma =
false) noexcept
300 bool dma =
false) noexcept
357 hf_u32_t timeout_ms = 1000) noexcept
440 vref_v(
hf::stm32::kAdcDefaultVrefV),
522 switch (raw_status) {
533 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:392
@ 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:369
@ 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:421
@ BITS_14
STM32H7/G4 only.
hf_stm32_uart_stop_bits_t
UART stop bits.
Definition StmTypes.h:336
hf_stm32_uart_parity_t
UART parity.
Definition StmTypes.h:329
hf_stm32_i2c_addr_mode_t
I2C address mode.
Definition StmTypes.h:242
@ ADDR_10BIT
10-bit addressing
@ ADDR_7BIT
7-bit addressing
hf_stm32_uart_data_bits_t
UART data bits.
Definition StmTypes.h:322
hf_stm32_spi_mode_t
SPI mode (CPOL/CPHA)
Definition StmTypes.h:282
constexpr hf_pin_num_t PD2
Definition StmTypes.h:232
constexpr hf_pin_num_t PB8
Definition StmTypes.h:204
constexpr hf_pin_num_t PB3
Definition StmTypes.h:199
constexpr hf_pin_num_t PA1
Definition StmTypes.h:180
constexpr hf_pin_num_t PA6
Definition StmTypes.h:185
constexpr hf_pin_num_t PC9
Definition StmTypes.h:222
constexpr hf_pin_num_t PB4
Definition StmTypes.h:200
constexpr hf_pin_num_t PC5
Definition StmTypes.h:218
constexpr hf_pin_num_t PC7
Definition StmTypes.h:220
constexpr hf_pin_num_t PC1
Definition StmTypes.h:214
constexpr hf_pin_num_t PB1
Definition StmTypes.h:197
constexpr hf_pin_num_t PD0
Definition StmTypes.h:230
constexpr hf_pin_num_t PB6
Definition StmTypes.h:202
constexpr hf_pin_num_t PB11
Definition StmTypes.h:207
constexpr hf_pin_num_t PC8
Definition StmTypes.h:221
constexpr hf_pin_num_t PC2
Definition StmTypes.h:215
constexpr hf_pin_num_t PB5
Definition StmTypes.h:201
constexpr hf_pin_num_t PA8
Definition StmTypes.h:187
constexpr hf_pin_num_t PB7
Definition StmTypes.h:203
constexpr hf_pin_num_t PB0
Definition StmTypes.h:196
constexpr hf_pin_num_t PA4
Definition StmTypes.h:183
constexpr hf_pin_num_t PB15
Definition StmTypes.h:211
constexpr hf_pin_num_t PA14
Definition StmTypes.h:193
constexpr hf_pin_num_t PC11
Definition StmTypes.h:224
constexpr hf_pin_num_t PC12
Definition StmTypes.h:225
constexpr hf_pin_num_t PA9
Definition StmTypes.h:188
constexpr hf_pin_num_t PA0
Definition StmTypes.h:179
constexpr hf_pin_num_t PA12
Definition StmTypes.h:191
constexpr hf_pin_num_t PB9
Definition StmTypes.h:205
constexpr hf_pin_num_t PB13
Definition StmTypes.h:209
constexpr hf_pin_num_t PB10
Definition StmTypes.h:206
constexpr hf_pin_num_t PB2
Definition StmTypes.h:198
constexpr hf_pin_num_t PC10
Definition StmTypes.h:223
constexpr hf_pin_num_t PA2
Definition StmTypes.h:181
constexpr hf_pin_num_t PA3
Definition StmTypes.h:182
constexpr hf_pin_num_t PA11
Definition StmTypes.h:190
constexpr hf_pin_num_t PC13
Definition StmTypes.h:226
constexpr hf_pin_num_t PA5
Definition StmTypes.h:184
constexpr hf_pin_num_t PB14
Definition StmTypes.h:210
constexpr hf_pin_num_t PC14
Definition StmTypes.h:227
constexpr hf_pin_num_t PA10
Definition StmTypes.h:189
constexpr hf_pin_num_t PB12
Definition StmTypes.h:208
constexpr hf_pin_num_t PA7
Definition StmTypes.h:186
constexpr hf_pin_num_t PC0
Definition StmTypes.h:213
constexpr hf_pin_num_t PC15
Definition StmTypes.h:228
constexpr hf_pin_num_t PC3
Definition StmTypes.h:216
constexpr hf_pin_num_t PA13
Definition StmTypes.h:192
constexpr hf_pin_num_t PD1
Definition StmTypes.h:231
constexpr hf_pin_num_t PA15
Definition StmTypes.h:194
constexpr hf_pin_num_t PC4
Definition StmTypes.h:217
constexpr hf_pin_num_t PC6
Definition StmTypes.h:219
static constexpr float kAdcDefaultVrefV
ADC reference voltage (V) — most STM32 boards.
Definition StmTypes.h:89
static constexpr float kTempSensorMaxC
Definition StmTypes.h:131
static constexpr hf_u16_t kMaxGpioPins
Maximum total GPIO pins (ports * pins_per_port)
Definition StmTypes.h:79
static constexpr hf_u8_t kAdcDefaultResolutionBits
Definition StmTypes.h:86
static constexpr hf_u16_t kCanDefaultQueueSize
Definition StmTypes.h:122
static constexpr hf_u32_t kCanMaxBaudRate
CAN limits.
Definition StmTypes.h:120
static constexpr hf_u16_t kI2cMaxTransferBytes
Definition StmTypes.h:96
static constexpr hf_u8_t kAdcMaxChannels
ADC maximum channels (typical STM32F4/H7)
Definition StmTypes.h:82
static constexpr hf_u32_t kI2cFastFreqHz
Definition StmTypes.h:94
static constexpr hf_u32_t kPwmMaxFreqHz
PWM limits.
Definition StmTypes.h:114
static constexpr hf_u32_t kI2cStandardFreqHz
Definition StmTypes.h:93
static constexpr hf_u32_t kLoggerMaxMessageLen
Logger.
Definition StmTypes.h:135
constexpr bool IsHalOk(hf_u32_t raw_status) noexcept
Check if a raw HAL status indicates success.
Definition StmTypes.h:532
constexpr hf_u8_t DecodePinPort(hf_pin_num_t pin) noexcept
Decode hf_pin_num_t → port index.
Definition StmTypes.h:163
static constexpr hf_u32_t kSpiMaxFreqHz
SPI limits.
Definition StmTypes.h:99
static constexpr size_t kNvsDefaultSectorSize
Definition StmTypes.h:127
constexpr hf_pin_num_t EncodePin(GpioPort port, hf_u8_t pin) noexcept
Encode (port, pin) → hf_pin_num_t.
Definition StmTypes.h:158
static constexpr hf_u16_t kSpiMaxTransferBytes
Definition StmTypes.h:101
static constexpr hf_u32_t kUartDefaultBaudRate
Definition StmTypes.h:105
GpioPort
GPIO port index (A=0, B=1, ... K=10)
Definition StmTypes.h:152
static constexpr float kTempSensorTypAccuracyC
Definition StmTypes.h:132
static constexpr hf_u16_t kPwmMaxResolution
Definition StmTypes.h:116
static constexpr hf_u32_t kLoggerDefaultBufferSize
Definition StmTypes.h:136
static constexpr size_t kNvsMaxKeyLength
Flash/NVS limits.
Definition StmTypes.h:125
static constexpr hf_u8_t kMaxGpioPorts
Maximum GPIO ports (A..K = 11 on largest STM32H7)
Definition StmTypes.h:73
static constexpr hf_u8_t kAdcMaxResolutionBits
ADC maximum resolution (bits)
Definition StmTypes.h:85
constexpr HalStatus ToHalStatus(hf_u32_t raw_status) noexcept
Convert raw HAL_StatusTypeDef to our enum.
Definition StmTypes.h:521
constexpr hf_u8_t DecodePinIndex(hf_pin_num_t pin) noexcept
Decode hf_pin_num_t → pin within port (0-15)
Definition StmTypes.h:168
HalStatus
STM32 HAL status codes (mirrors HAL_StatusTypeDef without HAL include)
Definition StmTypes.h:513
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:173
static constexpr hf_u32_t kI2cFastPlusFreqHz
Definition StmTypes.h:95
static constexpr hf_u8_t kPinsPerPort
Maximum pins per GPIO port.
Definition StmTypes.h:76
static constexpr hf_u64_t kTimerMinPeriodUs
Timer limits (in microseconds)
Definition StmTypes.h:109
static constexpr hf_u32_t kI2cMaxFreqHz
I2C limits.
Definition StmTypes.h:92
static constexpr float kTempSensorMinC
Temperature sensor.
Definition StmTypes.h:130
static constexpr hf_u32_t kCanFdMaxBaudRate
Definition StmTypes.h:121
static constexpr hf_u32_t kSpiDefaultFreqHz
Definition StmTypes.h:100
static constexpr hf_u64_t kTimerResolutionUs
Definition StmTypes.h:111
static constexpr hf_u32_t kPwmMinFreqHz
Definition StmTypes.h:115
static constexpr hf_u64_t kTimerMaxPeriodUs
Definition StmTypes.h:110
static constexpr hf_u16_t kUartDefaultBufferSize
Definition StmTypes.h:106
static constexpr hf_u32_t kUartMaxBaudRate
UART limits.
Definition StmTypes.h:104
static constexpr hf_u8_t kPwmMaxChannelsPerTimer
Definition StmTypes.h:117
static constexpr size_t kNvsMaxValueSize
Definition StmTypes.h:126
Platform-agnostic I2C bus configuration for STM32. Users pass their CubeMX-generated I2C_HandleTypeDe...
Definition StmTypes.h:249
hf_i2c_bus_config_t(I2C_HandleTypeDef *handle, hf_u32_t timeout_ms=1000, bool dma=false) noexcept
Definition StmTypes.h:257
bool use_dma
Use DMA transfers when available.
Definition StmTypes.h:252
I2C_HandleTypeDef * hal_handle
Pointer to CubeMX-generated I2C handle.
Definition StmTypes.h:250
hf_u32_t default_timeout_ms
Default timeout for all operations (ms)
Definition StmTypes.h:251
hf_i2c_bus_config_t() noexcept
Definition StmTypes.h:254
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:266
hf_u32_t scl_speed_hz
SCL clock speed (informational)
Definition StmTypes.h:267
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:270
hf_u16_t device_address
7-bit or 10-bit address
Definition StmTypes.h:265
Platform-agnostic SPI bus configuration for STM32.
Definition EspTypes_SPI.h:150
hf_spi_bus_config_t() noexcept
Definition StmTypes.h:295
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:291
hf_u32_t default_timeout_ms
Default timeout (ms)
Definition StmTypes.h:292
bool use_dma
Use DMA transfers when available.
Definition StmTypes.h:293
hf_spi_bus_config_t(SPI_HandleTypeDef *handle, hf_u32_t timeout_ms=1000, bool dma=false) noexcept
Definition StmTypes.h:298
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:309
bool cs_active_low
CS active low (default: true)
Definition StmTypes.h:310
GPIO_TypeDef * cs_port
CS GPIO port (e.g., GPIOA)
Definition StmTypes.h:308
hf_spi_mode_t mode
SPI mode (0-3)
Definition EspTypes_SPI.h:212
hf_stm32_spi_mode_t mode
SPI mode (informational — set in CubeMX)
Definition StmTypes.h:307
hf_spi_device_config_t() noexcept
Definition StmTypes.h:312
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:431
hf_stm32_adc_resolution_t resolution
ADC resolution.
Definition StmTypes.h:433
ADC_HandleTypeDef * hal_handle
Pointer to CubeMX-generated ADC handle.
Definition StmTypes.h:432
hf_u8_t num_channels
Number of configured channels.
Definition StmTypes.h:435
hf_stm32_adc_config_t() noexcept
Definition StmTypes.h:437
hf_stm32_adc_config_t(ADC_HandleTypeDef *handle, hf_u8_t channels=1, float vref=hf::stm32::kAdcDefaultVrefV) noexcept
Definition StmTypes.h:443
float vref_v
Reference voltage (V)
Definition StmTypes.h:434
CAN configuration for STM32.
Definition StmTypes.h:375
hf_u32_t default_timeout_ms
Default timeout (ms)
Definition StmTypes.h:378
hf_stm32_can_config_t() noexcept
Definition StmTypes.h:382
bool silent_mode
Enable silent/listen-only mode.
Definition StmTypes.h:380
void * hal_handle
CAN_HandleTypeDef* or FDCAN_HandleTypeDef*.
Definition StmTypes.h:377
bool loopback_mode
Enable loopback for testing.
Definition StmTypes.h:379
hf_stm32_can_type_t can_type
CAN peripheral type.
Definition StmTypes.h:376
GPIO configuration for STM32 wrapping CubeMX port/pin.
Definition StmTypes.h:496
hf_stm32_gpio_config_t() noexcept
Definition StmTypes.h:500
GPIO_TypeDef * port
GPIO port pointer (GPIOA, GPIOB, etc.)
Definition StmTypes.h:497
hf_stm32_gpio_config_t(GPIO_TypeDef *gpio_port, hf_u16_t pin) noexcept
Definition StmTypes.h:502
hf_u16_t pin_mask
GPIO pin mask (GPIO_PIN_0..GPIO_PIN_15)
Definition StmTypes.h:498
Flash-based NVS configuration for STM32.
Definition StmTypes.h:457
hf_u32_t flash_size
Total NVS region size (bytes)
Definition StmTypes.h:459
hf_stm32_nvs_config_t() noexcept
Definition StmTypes.h:463
hf_u32_t sector_size
Flash sector/page size (bytes)
Definition StmTypes.h:460
hf_u8_t num_sectors
Number of sectors reserved for NVS.
Definition StmTypes.h:461
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:467
hf_u32_t flash_start_address
Start address of NVS flash region.
Definition StmTypes.h:458
PWM configuration for STM32.
Definition StmTypes.h:400
hf_stm32_pwm_config_t() noexcept
Definition StmTypes.h:406
hf_stm32_pwm_config_t(TIM_HandleTypeDef *handle, hf_u8_t channels=1) noexcept
Definition StmTypes.h:410
hf_u16_t dead_time_ns
Dead-time for complementary pairs (ns)
Definition StmTypes.h:404
hf_u8_t num_channels
Number of active channels (1-4)
Definition StmTypes.h:402
bool complementary_output
Enable complementary outputs (TIMx_CHxN)
Definition StmTypes.h:403
TIM_HandleTypeDef * hal_handle
Pointer to CubeMX-generated TIM handle.
Definition StmTypes.h:401
Periodic timer configuration for STM32.
Definition StmTypes.h:479
TIM_HandleTypeDef * hal_handle
Pointer to CubeMX-generated TIM handle.
Definition StmTypes.h:480
hf_stm32_timer_config_t(TIM_HandleTypeDef *handle) noexcept
Definition StmTypes.h:487
hf_u32_t prescaler
Timer prescaler (0 = auto-compute)
Definition StmTypes.h:481
hf_stm32_timer_config_t() noexcept
Definition StmTypes.h:484
bool use_interrupt
Use timer update interrupt.
Definition StmTypes.h:482
Platform-agnostic UART configuration for STM32.
Definition StmTypes.h:342
bool use_dma_rx
Use DMA for RX.
Definition StmTypes.h:346
hf_u16_t tx_buffer_size
Transmit buffer size.
Definition StmTypes.h:348
hf_stm32_uart_config_t(UART_HandleTypeDef *handle, hf_u32_t timeout_ms=1000) noexcept
Definition StmTypes.h:356
hf_u16_t rx_buffer_size
Receive ring buffer size.
Definition StmTypes.h:347
hf_u32_t default_timeout_ms
Default timeout (ms)
Definition StmTypes.h:344
hf_stm32_uart_config_t() noexcept
Definition StmTypes.h:350
UART_HandleTypeDef * hal_handle
Pointer to CubeMX-generated UART handle.
Definition StmTypes.h:343
bool use_dma_tx
Use DMA for TX.
Definition StmTypes.h:345