diff --git a/include/led.h b/include/led.h new file mode 100644 index 0000000..3225d39 --- /dev/null +++ b/include/led.h @@ -0,0 +1,10 @@ +#pragma once + +struct led { + uint32_t port; + uint32_t pin; + int invert; +}; + +void led_enable(struct led *led); +void led_disable(struct led *led); diff --git a/source/platform/stm32f0/Makefile b/source/platform/stm32f0/Makefile index 1214f67..f4cb91f 100644 --- a/source/platform/stm32f0/Makefile +++ b/source/platform/stm32f0/Makefile @@ -4,6 +4,7 @@ obj-y += source/platform/usart.o obj-y += source/platform/stm32f0/alarm.o obj-y += source/platform/stm32f0/buzzer.o obj-y += source/platform/stm32f0/gpio.o +obj-y += source/platform/stm32f0/led.o obj-y += source/platform/stm32f0/rcc.o obj-y += source/platform/stm32f0/rtc.o obj-y += source/platform/stm32f0/spi.o diff --git a/source/platform/stm32f0/led.c b/source/platform/stm32f0/led.c new file mode 100644 index 0000000..ca812cc --- /dev/null +++ b/source/platform/stm32f0/led.c @@ -0,0 +1,31 @@ +#include + +#include +#include + +struct led leds[] = { + { GPIOC, GPIO8, 0 }, +}; +size_t nleds = count_of(leds); + +void led_enable(struct led *led) +{ + if (!led) + return; + + if (led->invert) + gpio_clear(led->port, led->pin); + else + gpio_set(led->port, led->pin); +} + +void led_disable(struct led *led) +{ + if (!led) + return; + + if (led->invert) + gpio_set(led->port, led->pin); + else + gpio_clear(led->port, led->pin); +} diff --git a/source/platform/stm32f1/Makefile b/source/platform/stm32f1/Makefile index e622aef..9ccd108 100644 --- a/source/platform/stm32f1/Makefile +++ b/source/platform/stm32f1/Makefile @@ -4,6 +4,7 @@ obj-y += source/platform/usart.o obj-y += source/platform/stm32f1/alarm.o obj-y += source/platform/stm32f1/buzzer.o obj-y += source/platform/stm32f1/gpio.o +obj-y += source/platform/stm32f1/led.o obj-y += source/platform/stm32f1/rcc.o obj-y += source/platform/stm32f1/rtc.o obj-y += source/platform/stm32f1/spi.o diff --git a/source/platform/stm32f1/led.c b/source/platform/stm32f1/led.c new file mode 100644 index 0000000..0214ea6 --- /dev/null +++ b/source/platform/stm32f1/led.c @@ -0,0 +1,31 @@ +#include + +#include +#include + +struct led leds[] = { + { GPIOB, GPIO0, 1 }, +}; +size_t nleds = count_of(leds); + +void led_enable(struct led *led) +{ + if (!led) + return; + + if (led->invert) + gpio_clear(led->port, led->pin); + else + gpio_set(led->port, led->pin); +} + +void led_disable(struct led *led) +{ + if (!led) + return; + + if (led->invert) + gpio_set(led->port, led->pin); + else + gpio_clear(led->port, led->pin); +}