Driver for LEDs control:
- Turn ON a LED;
- Turn OFF a LED;
- Turn in ERROR condition a LED (100 ms period of blinking).
ldind_init
: LED initialization, if everything is ok the LED will blink once.ldind_write
: choose the LED status (ON, OFF or ERROR).
This driver requires a basic timer
.
- Include the header file
drv_ldind.h
. - In the .ioc file setup the LEDs GPIO port and a basic timer with a global interrupt (it works on 100 ms independently, no other parameters are required).
- create the
ldind_t
instance:gpio_port
: LED GPIO port.gpio_pin
: LED GPIO pin.mx_init
: the .ioc autogenerated function where the GPIO is initialised.active_high
: the electrical characteristic of the LED (1 if it is activated high and 0 for the opposite).htim
: basic timer handler (ONLY for the LED that marks an ERROR condition).clock_frequency_mhz
: clock frequency used for the timer peripheral (ONLY for the LED that marks an ERROR condition).
This example uses a STM32F429I board.
ldind_t ldind_red = {
.gpio_port = GPIOG,
.gpio_pin = GPIO_PIN_14,
.mx_init = MX_GPIO_Init,
.active_high = 1,
.htim = &htim6,
.clock_frequency_mhz = 16,
};
ldind_t ldind_green = {
.gpio_port = GPIOG,
.gpio_pin = GPIO_PIN_13,
.mx_init = MX_GPIO_Init,
.active_high = 1,
};
void test_drv_ldind(void)
{
ldind_init(&ldind_red);
ldind_init(&ldind_green);
ldind_write(&ldind_red, C_ERROR);
HAL_Delay(1000);
ldind_write(&ldind_red, C_OFF);
HAL_Delay(1000);
ldind_write(&ldind_red, C_ERROR);
}