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

wirehaze git hosting

662753542e3bb8c5473829bca9f5d45f7d0d337c
[stm32f411ceu6.git] / 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 /* MODERy[1:0]: Port x configuration bits (y = 0..15) */
10 *GPIOC_MODER &= ~(0b11u << 26); /* Clear PC13 bits */
11 *GPIOC_MODER |= (1u << 26); /* 01: General purpose output mode */
12
13 /* PC13: 0 = LED on
14 * 1 = LED off */
15 }
16
17 void
18 led_on (void)
19 {
20 *GPIOC_ODR &= ~(1u << 13);
21 }
22
23 void
24 led_off (void)
25 {
26 *GPIOC_ODR |= (1u << 13);
27 }
28
29 void
30 led_toggle (void)
31 {
32 *GPIOC_ODR ^= (1u << 13);
33 }