stm32_leds.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2022 Otto-von-Guericke-Universität Magdeburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
23 #ifndef STM32_LEDS_H
24 #define STM32_LEDS_H
25 
26 /* Using gpio_ll_arch for GPIO access. On STM32, accessing the GPIO output
27  * buffer via GPIO LL even works when the GPIO LL feature/module is not in
28  * use */
29 #include "periph/gpio_ll.h"
30 #include "kernel_defines.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
40 #if defined(LED0_PORT_NUM) && defined (LED0_PIN_NUM)
41 # define LED0_PIN GPIO_PIN(LED0_PORT_NUM, LED0_PIN_NUM)
42 # define LED0_MASK (1 << LED0_PIN_NUM)
43 # if IS_ACTIVE(LED0_IS_INVERTED)
44 # define LED0_ON gpio_ll_clear(LED0_PORT, LED0_MASK)
45 # define LED0_OFF gpio_ll_set(LED0_PORT, LED0_MASK)
46 # else
47 # define LED0_ON gpio_ll_set(LED0_PORT, LED0_MASK)
48 # define LED0_OFF gpio_ll_clear(LED0_PORT, LED0_MASK)
49 # endif
50 # define LED0_TOGGLE gpio_ll_toggle(LED0_PORT, LED0_MASK)
51 #endif
52 
53 #if defined(LED1_PORT_NUM) && defined (LED1_PIN_NUM)
54 # define LED1_PIN GPIO_PIN(LED1_PORT_NUM, LED1_PIN_NUM)
55 # define LED1_MASK (1 << LED1_PIN_NUM)
56 # if IS_ACTIVE(LED1_IS_INVERTED)
57 # define LED1_ON gpio_ll_clear(LED1_PORT, LED1_MASK)
58 # define LED1_OFF gpio_ll_set(LED1_PORT, LED1_MASK)
59 # else
60 # define LED1_ON gpio_ll_set(LED1_PORT, LED1_MASK)
61 # define LED1_OFF gpio_ll_clear(LED1_PORT, LED1_MASK)
62 # endif
63 # define LED1_TOGGLE gpio_ll_toggle(LED1_PORT, LED1_MASK)
64 #endif
65 
66 #if defined(LED2_PORT_NUM) && defined (LED2_PIN_NUM)
67 # define LED2_PIN GPIO_PIN(LED2_PORT_NUM, LED2_PIN_NUM)
68 # define LED2_MASK (1 << LED2_PIN_NUM)
69 # if IS_ACTIVE(LED2_IS_INVERTED)
70 # define LED2_ON gpio_ll_clear(LED2_PORT, LED2_MASK)
71 # define LED2_OFF gpio_ll_set(LED2_PORT, LED2_MASK)
72 # else
73 # define LED2_ON gpio_ll_set(LED2_PORT, LED2_MASK)
74 # define LED2_OFF gpio_ll_clear(LED2_PORT, LED2_MASK)
75 # endif
76 # define LED2_TOGGLE gpio_ll_toggle(LED2_PORT, LED2_MASK)
77 #endif
78 
79 #if defined(LED3_PORT_NUM) && defined (LED3_PIN_NUM)
80 # define LED3_PIN GPIO_PIN(LED3_PORT_NUM, LED3_PIN_NUM)
81 # define LED3_MASK (1 << LED3_PIN_NUM)
82 # if IS_ACTIVE(LED3_IS_INVERTED)
83 # define LED3_ON gpio_ll_clear(LED3_PORT, LED3_MASK)
84 # define LED3_OFF gpio_ll_set(LED3_PORT, LED3_MASK)
85 # else
86 # define LED3_ON gpio_ll_set(LED3_PORT, LED3_MASK)
87 # define LED3_OFF gpio_ll_clear(LED3_PORT, LED3_MASK)
88 # endif
89 # define LED3_TOGGLE gpio_ll_toggle(LED3_PORT, LED3_MASK)
90 #endif
91 
92 #if defined(LED4_PORT_NUM) && defined (LED4_PIN_NUM)
93 # define LED4_PIN GPIO_PIN(LED4_PORT_NUM, LED4_PIN_NUM)
94 # define LED4_MASK (1 << LED4_PIN_NUM)
95 # if IS_ACTIVE(LED4_IS_INVERTED)
96 # define LED4_ON gpio_ll_clear(LED4_PORT, LED4_MASK)
97 # define LED4_OFF gpio_ll_set(LED4_PORT, LED4_MASK)
98 # else
99 # define LED4_ON gpio_ll_set(LED4_PORT, LED4_MASK)
100 # define LED4_OFF gpio_ll_clear(LED4_PORT, LED4_MASK)
101 # endif
102 # define LED4_TOGGLE gpio_ll_toggle(LED4_PORT, LED4_MASK)
103 #endif
104 
105 #if defined(LED5_PORT_NUM) && defined (LED5_PIN_NUM)
106 # define LED5_PIN GPIO_PIN(LED5_PORT_NUM, LED5_PIN_NUM)
107 # define LED5_MASK (1 << LED5_PIN_NUM)
108 # if IS_ACTIVE(LED5_IS_INVERTED)
109 # define LED5_ON gpio_ll_clear(LED5_PORT, LED5_MASK)
110 # define LED5_OFF gpio_ll_set(LED5_PORT, LED5_MASK)
111 # else
112 # define LED5_ON gpio_ll_set(LED5_PORT, LED5_MASK)
113 # define LED5_OFF gpio_ll_clear(LED5_PORT, LED5_MASK)
114 # endif
115 # define LED5_TOGGLE gpio_ll_toggle(LED5_PORT, LED5_MASK)
116 #endif
117 
118 #if defined(LED6_PORT_NUM) && defined (LED6_PIN_NUM)
119 # define LED6_PIN GPIO_PIN(LED6_PORT_NUM, LED6_PIN_NUM)
120 # define LED6_MASK (1 << LED6_PIN_NUM)
121 # if IS_ACTIVE(LED6_IS_INVERTED)
122 # define LED6_ON gpio_ll_clear(LED6_PORT, LED6_MASK)
123 # define LED6_OFF gpio_ll_set(LED6_PORT, LED6_MASK)
124 # else
125 # define LED6_ON gpio_ll_set(LED6_PORT, LED6_MASK)
126 # define LED6_OFF gpio_ll_clear(LED6_PORT, LED6_MASK)
127 # endif
128 # define LED6_TOGGLE gpio_ll_toggle(LED6_PORT, LED6_MASK)
129 #endif
130 
131 #if defined(LED7_PORT_NUM) && defined (LED7_PIN_NUM)
132 # define LED7_PIN GPIO_PIN(LED7_PORT_NUM, LED7_PIN_NUM)
133 # define LED7_MASK (1 << LED7_PIN_NUM)
134 # if IS_ACTIVE(LED7_IS_INVERTED)
135 # define LED7_ON gpio_ll_clear(LED7_PORT, LED7_MASK)
136 # define LED7_OFF gpio_ll_set(LED7_PORT, LED7_MASK)
137 # else
138 # define LED7_ON gpio_ll_set(LED7_PORT, LED7_MASK)
139 # define LED7_OFF gpio_ll_clear(LED7_PORT, LED7_MASK)
140 # endif
141 # define LED7_TOGGLE gpio_ll_toggle(LED7_PORT, LED7_MASK)
142 #endif
143 
146 #ifdef __cplusplus
147 }
148 #endif
149 
150 #endif /* STM32_LEDS_H */
Peripheral GPIO Low-Level API.
Common macros and compiler attributes/pragmas configuration.