]> wirehaze git hosting - stm32f411ceu6.git/blob - sys/dev/led.c

wirehaze git hosting

panic ()
[stm32f411ceu6.git] / sys / dev / led.c
1 #include <led.h>
2 #include <stm32f411.h>
3
4 void
5 led_init (void)
6 {
7 /* GPIOCEN: IO port C clock enable */
8 *RCC_AHB1ENR |= (1u << 2); /* 1: IO port C clock enabled */
9
10 /* Default to LED being turned off */
11 *GPIOC_ODR |= (1u << 13);
12
13 /* MODERy[1:0]: Port x configuration bits (y = 0..15) */
14 *GPIOC_MODER &= ~(0b11u << 26); /* Clear PC13 bits */
15 *GPIOC_MODER |= (1u << 26); /* 01: General purpose output mode */
16
17 /* PC13: 0 = LED on
18 * 1 = LED off */
19 }
20
21 void
22 led_on (void)
23 {
24 *GPIOC_ODR &= ~(1u << 13);
25 }
26
27 void
28 led_off (void)
29 {
30 *GPIOC_ODR |= (1u << 13);
31 }
32
33 void
34 led_toggle (void)
35 {
36 *GPIOC_ODR ^= (1u << 13);
37 }