Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions bsp/stm32/libraries/HAL_Drivers/drivers/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -188,3 +188,125 @@ if SOC_SERIES_STM32H7
select BSP_USING_BDMA
default n
endif

menu "STM32 Input Capture BSP"

config BSP_USING_INPUT_CAPTURE
bool "Enable STM32 timer Input Capture devices"
default n
select RT_USING_INPUT_CAPTURE
help
Registers selected STM32 hardware timer Input Capture devices.
F1 and H7 have configuration headers; additional series need a
matching configuration header before enabling this option.
GPIO, clock and interrupt setup are owned by CubeMX HAL IC MSP.

if BSP_USING_INPUT_CAPTURE
config BSP_INPUT_CAPTURE_COUNTER_HZ
int "Capture timer counter frequency (Hz)"
range 100000 1000000
default 1000000

config BSP_USING_INPUT_CAPTURE_TIM1
bool "Enable TIM1 Input Capture"
default n

if BSP_USING_INPUT_CAPTURE_TIM1
config BSP_INPUT_CAPTURE_TIM1_NAME
string "TIM1 Input Capture device name"
default "ic1"

config BSP_INPUT_CAPTURE_TIM1_CHANNEL
int "TIM1 Input Capture channel (1-4)"
range 1 4
default 1

config BSP_INPUT_CAPTURE_TIM1_FILTER
int "TIM1 Input Capture digital filter (0-15)"
range 0 15
default 0

config BSP_INPUT_CAPTURE_TIM1_INITIAL_RISING
int "TIM1 initial capture edge (1 rising, 0 falling)"
range 0 1
default 1
endif

config BSP_USING_INPUT_CAPTURE_TIM2
bool "Enable TIM2 Input Capture"
default n

if BSP_USING_INPUT_CAPTURE_TIM2
config BSP_INPUT_CAPTURE_TIM2_NAME
string "TIM2 Input Capture device name"
default "ic2"

config BSP_INPUT_CAPTURE_TIM2_CHANNEL
int "TIM2 Input Capture channel (1-4)"
range 1 4
default 1

config BSP_INPUT_CAPTURE_TIM2_FILTER
int "TIM2 Input Capture digital filter (0-15)"
range 0 15
default 0

config BSP_INPUT_CAPTURE_TIM2_INITIAL_RISING
int "TIM2 initial capture edge (1 rising, 0 falling)"
range 0 1
default 1
endif

config BSP_USING_INPUT_CAPTURE_TIM3
bool "Enable TIM3 Input Capture"
default y

if BSP_USING_INPUT_CAPTURE_TIM3
config BSP_INPUT_CAPTURE_TIM3_NAME
string "TIM3 Input Capture device name"
default "ic3"

config BSP_INPUT_CAPTURE_TIM3_CHANNEL
int "TIM3 Input Capture channel (1-4)"
range 1 4
default 1

config BSP_INPUT_CAPTURE_TIM3_FILTER
int "TIM3 Input Capture digital filter (0-15)"
range 0 15
default 0

config BSP_INPUT_CAPTURE_TIM3_INITIAL_RISING
int "TIM3 initial capture edge (1 rising, 0 falling)"
range 0 1
default 1
endif

config BSP_USING_INPUT_CAPTURE_TIM4
bool "Enable TIM4 Input Capture"
default n

if BSP_USING_INPUT_CAPTURE_TIM4
config BSP_INPUT_CAPTURE_TIM4_NAME
string "TIM4 Input Capture device name"
default "ic4"

config BSP_INPUT_CAPTURE_TIM4_CHANNEL
int "TIM4 Input Capture channel (1-4)"
range 1 4
default 1

config BSP_INPUT_CAPTURE_TIM4_FILTER
int "TIM4 Input Capture digital filter (0-15)"
range 0 15
default 0

config BSP_INPUT_CAPTURE_TIM4_INITIAL_RISING
int "TIM4 initial capture edge (1 rising, 0 falling)"
range 0 1
default 1
endif

endif

endmenu
3 changes: 3 additions & 0 deletions bsp/stm32/libraries/HAL_Drivers/drivers/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ if GetDepend(['RT_USING_SERIAL']):
if GetDepend(['BSP_USING_TIM']):
src += ['drv_tim.c']

if GetDepend(['BSP_USING_INPUT_CAPTURE']):
src += ['drv_inputcapture.c']

if GetDepend(['BSP_USING_PWM']):
src += ['drv_pwm.c', 'drv_tim.c']

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2026-11-02 wdfk-prog first version
*/
#ifndef __INPUTCAPTURE_CONFIG_H__
#define __INPUTCAPTURE_CONFIG_H__

#include "drv_inputcapture.h"

#ifdef BSP_USING_INPUT_CAPTURE_TIM1
/** @brief Board-selected TIM1 Input Capture configuration. */
#define INPUTCAPTURE_TIM1_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM1_NAME, \
.instance = TIM1, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM1_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM1_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM1_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM1 */

#ifdef BSP_USING_INPUT_CAPTURE_TIM2
/** @brief Board-selected TIM2 Input Capture configuration. */
#define INPUTCAPTURE_TIM2_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM2_NAME, \
.instance = TIM2, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM2_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM2_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM2_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM2 */

#ifdef BSP_USING_INPUT_CAPTURE_TIM3
/** @brief Board-selected TIM3 Input Capture configuration. */
#define INPUTCAPTURE_TIM3_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM3_NAME, \
.instance = TIM3, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM3_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM3_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM3_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM3 */

#ifdef BSP_USING_INPUT_CAPTURE_TIM4
/** @brief Board-selected TIM4 Input Capture configuration. */
#define INPUTCAPTURE_TIM4_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM4_NAME, \
.instance = TIM4, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM4_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM4_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM4_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM4 */

#endif /* __INPUTCAPTURE_CONFIG_H__ */
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2026-11-01 wdfk-prog first version
*/
#ifndef __INPUTCAPTURE_CONFIG_H__
#define __INPUTCAPTURE_CONFIG_H__

#include "drv_inputcapture.h"

#ifdef BSP_USING_INPUT_CAPTURE_TIM1
/** @brief Board-selected TIM1 Input Capture configuration. */
#define INPUTCAPTURE_TIM1_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM1_NAME, \
.instance = TIM1, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM1_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM1_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM1_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM1 */

#ifdef BSP_USING_INPUT_CAPTURE_TIM2
/** @brief Board-selected TIM2 Input Capture configuration. */
#define INPUTCAPTURE_TIM2_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM2_NAME, \
.instance = TIM2, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM2_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM2_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM2_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM2 */

#ifdef BSP_USING_INPUT_CAPTURE_TIM3
/** @brief Board-selected TIM3 Input Capture configuration. */
#define INPUTCAPTURE_TIM3_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM3_NAME, \
.instance = TIM3, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM3_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM3_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM3_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM3 */

#ifdef BSP_USING_INPUT_CAPTURE_TIM4
/** @brief Board-selected TIM4 Input Capture configuration. */
#define INPUTCAPTURE_TIM4_CONFIG \
{ \
.name = BSP_INPUT_CAPTURE_TIM4_NAME, \
.instance = TIM4, \
.channel = STM32_CAPTURE_CHANNEL(BSP_INPUT_CAPTURE_TIM4_CHANNEL), \
.input_filter = BSP_INPUT_CAPTURE_TIM4_FILTER, \
.counter_period = 0xFFFFU, \
.initial_edge_rising = BSP_INPUT_CAPTURE_TIM4_INITIAL_RISING, \
.hardware_both_edges = RT_FALSE, \
}
#endif /* BSP_USING_INPUT_CAPTURE_TIM4 */

#endif /* __INPUTCAPTURE_CONFIG_H__ */
2 changes: 2 additions & 0 deletions bsp/stm32/libraries/HAL_Drivers/drivers/drv_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ extern "C" {
#include "f1/usbd_config.h"
#include "f1/i2c_hard_config.h"
#include "f1/pulse_encoder_config.h"
#include "f1/inputcapture_config.h"
#elif defined(SOC_SERIES_STM32F2)
#include "f2/dma_config.h"
#include "f2/uart_config.h"
Expand Down Expand Up @@ -142,6 +143,7 @@ extern "C" {
#include "h7/pwm_config.h"
#include "h7/usbd_config.h"
#include "h7/i2c_hard_config.h"
#include "h7/inputcapture_config.h"
#elif defined(SOC_SERIES_STM32H7RS)
#include "h7/dma_config.h"
#include "h7/uart_config.h"
Expand Down
Loading
Loading