Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
board.h
Go to the documentation of this file.
1/*
2 ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15*/
16
17#ifndef _BOARD_H_
18#define _BOARD_H_
19
20/*
21 * Setup for STMicroelectronics STM32F4-Lisa MX.
22 */
23
24/*
25 * Board identifier.
26 */
27#define BOARD_ST_STM32F4_LISA
28#define BOARD_NAME "STMicroelectronics STM32F4-Lisa"
29
30
31/*
32 * Board oscillators-related settings.
33 * NOTE: LSE not fitted.
34 */
35#if !defined(STM32_LSECLK)
36#define STM32_LSECLK 0
37#endif
38
39#if !defined(STM32_HSECLK)
40#define STM32_HSECLK 12000000
41#endif
42
43
44/*
45 * Board voltages.
46 * Required for performance limits calculation.
47 */
48#define STM32_VDD 330
49
50/*
51 * MCU type as defined in the ST header file stm32f4xx.h.
52 */
53#define STM32F407xx
54
55
56/*
57 * I/O ports initial setup, this configuration is established soon after reset
58 * in the initialization code.
59 * Please refer to the STM32 Reference Manual for details.
60 */
61#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
62#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
63#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
64#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
65#define PIN_ODR_LOW(n) (0U << (n))
66#define PIN_ODR_HIGH(n) (1U << (n))
67#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
68#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
69#define PIN_OSPEED_2M(n) (0U << ((n) * 2U))
70#define PIN_OSPEED_25M(n) (1U << ((n) * 2U))
71#define PIN_OSPEED_50M(n) (2U << ((n) * 2U))
72#define PIN_OSPEED_100M(n) (3U << ((n) * 2U))
73#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
74#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
75#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
76#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
77
78/*
79 * Port A setup.
80 *
81 * PA0 - Alternate Push Pull output 50MHz (SERVO5-Timer5Ch1)
82 * PA1 - Alternate Push Pull output 50MHz (SERVO6-Timer5Ch2)
83 * PA2 - Alternate Push Pull output 50MHz (UART2_TX)
84 * PA3 - Digital input (UART2_RX)
85 * PA4 - Alternate Push Pull output 50MHz (EXTSPI1_SS)
86 * PA5 - Alternate Push Pull output 50MHz (EXTSPI1_SCK)
87 * PA6 - Digital input. (EXTSPI1_MISO)
88 * PA7 - Alternate Push Pull output 50MHz (EXTSPI1_MOSI)
89 * PA8 - Open Drain output 50MHz (LED1)
90 * PA9 - Digital input. (USB_VBUS)
91 * PA10 - Digital input. (UART1_Rx / PPM_IN Timer1Ch3)
92 * PA11 - Alternate input (USB_DM)
93 * PA12 - Alternate input (USB_DP)
94 * PA13 - Digital input (JTAG_TMS/SWDIO)
95 * PA14 - Digital input (JTAG_TCK/SWCLCK)
96 * PA15 - Digital input (JTAG_TDI)
97 */
98#define VAL_GPIOA_MODER (PIN_MODE_ALTERNATE(0)| \
99 PIN_MODE_ALTERNATE(1) | \
100 PIN_MODE_ALTERNATE(2) | \
101 PIN_MODE_ALTERNATE(3) | \
102 PIN_MODE_ALTERNATE(4) | \
103 PIN_MODE_ALTERNATE(5) | \
104 PIN_MODE_ALTERNATE(6) | \
105 PIN_MODE_ALTERNATE(7) | \
106 PIN_MODE_OUTPUT(8) | \
107 PIN_MODE_INPUT(9) | \
108 PIN_MODE_ALTERNATE(10) | \
109 PIN_MODE_ALTERNATE(11) | \
110 PIN_MODE_ALTERNATE(12) | \
111 PIN_MODE_ALTERNATE(13) | \
112 PIN_MODE_ALTERNATE(14) | \
113 PIN_MODE_ALTERNATE(15))
114#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
115 PIN_OTYPE_PUSHPULL(1) | \
116 PIN_OTYPE_PUSHPULL(2) | \
117 PIN_OTYPE_PUSHPULL(3) | \
118 PIN_OTYPE_PUSHPULL(4) | \
119 PIN_OTYPE_PUSHPULL(5) | \
120 PIN_OTYPE_PUSHPULL(6) | \
121 PIN_OTYPE_PUSHPULL(7) | \
122 PIN_OTYPE_OPENDRAIN(8) | \
123 PIN_OTYPE_PUSHPULL(9) | \
124 PIN_OTYPE_PUSHPULL(10) | \
125 PIN_OTYPE_PUSHPULL(11) | \
126 PIN_OTYPE_PUSHPULL(12) | \
127 PIN_OTYPE_PUSHPULL(13) | \
128 PIN_OTYPE_PUSHPULL(14) | \
129 PIN_OTYPE_PUSHPULL(15))
130#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_50M(0) | \
131 PIN_OSPEED_50M(1) | \
132 PIN_OSPEED_50M(2) | \
133 PIN_OSPEED_50M(3) | \
134 PIN_OSPEED_50M(4) | \
135 PIN_OSPEED_50M(5) | \
136 PIN_OSPEED_50M(6) | \
137 PIN_OSPEED_50M(7) | \
138 PIN_OSPEED_50M(8) | \
139 PIN_OSPEED_50M(9) | \
140 PIN_OSPEED_50M(10) | \
141 PIN_OSPEED_50M(11) | \
142 PIN_OSPEED_50M(12) | \
143 PIN_OSPEED_100M(13) | \
144 PIN_OSPEED_100M(14) | \
145 PIN_OSPEED_100M(15))
146#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(0) | \
147 PIN_PUPDR_FLOATING(1) | \
148 PIN_PUPDR_FLOATING(2) | \
149 PIN_PUPDR_FLOATING(3) | \
150 PIN_PUPDR_FLOATING(4) | \
151 PIN_PUPDR_FLOATING(5) | \
152 PIN_PUPDR_FLOATING(6) | \
153 PIN_PUPDR_FLOATING(7) | \
154 PIN_PUPDR_FLOATING(8) | \
155 PIN_PUPDR_FLOATING(9) | \
156 PIN_PUPDR_FLOATING(10) | \
157 PIN_PUPDR_FLOATING(11) | \
158 PIN_PUPDR_FLOATING(12) | \
159 PIN_PUPDR_FLOATING(13) | \
160 PIN_PUPDR_FLOATING(14) | \
161 PIN_PUPDR_FLOATING(15))
162#define VAL_GPIOA_ODR (PIN_ODR_HIGH(0) | \
163 PIN_ODR_HIGH(1) | \
164 PIN_ODR_HIGH(2) | \
165 PIN_ODR_HIGH(3) | \
166 PIN_ODR_HIGH(4) | \
167 PIN_ODR_HIGH(5) | \
168 PIN_ODR_HIGH(6) | \
169 PIN_ODR_HIGH(7) | \
170 PIN_ODR_HIGH(8) | \
171 PIN_ODR_HIGH(9) | \
172 PIN_ODR_HIGH(10) | \
173 PIN_ODR_HIGH(11) | \
174 PIN_ODR_HIGH(12) | \
175 PIN_ODR_HIGH(13) | \
176 PIN_ODR_HIGH(14) | \
177 PIN_ODR_HIGH(15))
178#define VAL_GPIOA_AFRL (PIN_AFIO_AF(0, 2) | \
179 PIN_AFIO_AF(1, 2) | \
180 PIN_AFIO_AF(2, 7) | \
181 PIN_AFIO_AF(3, 7) | \
182 PIN_AFIO_AF(4, 5) | \
183 PIN_AFIO_AF(5, 5) | \
184 PIN_AFIO_AF(6, 5) | \
185 PIN_AFIO_AF(7, 5))
186#define VAL_GPIOA_AFRH (PIN_AFIO_AF(8, 0) | \
187 PIN_AFIO_AF(9, 0) | \
188 PIN_AFIO_AF(10, 1) | \
189 PIN_AFIO_AF(11, 10) | \
190 PIN_AFIO_AF(12, 10) | \
191 PIN_AFIO_AF(13, 0) | \
192 PIN_AFIO_AF(14, 0) | \
193 PIN_AFIO_AF(15, 0))
194
195/*
196 * Port B setup:
197 * PB0 - Digital input (BARO_DRDY)
198 * PB1 - Digital input (EXTSPI1_DRDY)
199 * PB2 - Digital input (IMU_ACC_DRDY)
200 * PB3 - Digital input (JTAG_TDO/SWD)
201 * PB4 - Open Drain output 50MHz (LED2)
202 * PB5 - Digital input (IMU_MAG_DRDY)
203 * PB6 - Alternate Push Pull output 50MHz (SERVO7-Timer4Ch1)/USART1_TX
204 * PB7 - Alternate Push Pull output 50MHz (SERVO8-Timer4Ch2)/USART1_RX
205 * PB8 - Digital input. (CAN_RX)
206 * PB9 - Open Drain output 50MHz. (CAN_TX)
207 * PB10 - Alternate Open Drain output 2MHz.(I2C2_SCL)
208 * PB11 - Alternate Open Drain output 2MHz.(I2C2_SDA)
209 * PB12 - Push Pull output 50MHz. (IMU_ACC_SPI2_CS)
210 * PB13 - Alternate Push Pull output 50MHz (IMU_SPI2_SCK)
211 * PB14 - Digital input (IMU_SPI2_MISO)
212 * PB15 - Alternate Push Pull output 50MHz (IMU_SPI_MOSI)
213 */
214#define VAL_GPIOB_MODER (PIN_MODE_INPUT(0) | \
215 PIN_MODE_INPUT(1) | \
216 PIN_MODE_INPUT(2) | \
217 PIN_MODE_ALTERNATE(3) | \
218 PIN_MODE_OUTPUT(4) | \
219 PIN_MODE_INPUT(5) | \
220 PIN_MODE_ALTERNATE(6) | \
221 PIN_MODE_ALTERNATE(7) | \
222 PIN_MODE_ALTERNATE(8) | \
223 PIN_MODE_ALTERNATE(9) | \
224 PIN_MODE_ALTERNATE(10) | \
225 PIN_MODE_ALTERNATE(11) | \
226 PIN_MODE_OUTPUT(12) | \
227 PIN_MODE_ALTERNATE(13) | \
228 PIN_MODE_ALTERNATE(14) | \
229 PIN_MODE_ALTERNATE(15))
230#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
231 PIN_OTYPE_PUSHPULL(1) | \
232 PIN_OTYPE_PUSHPULL(2) | \
233 PIN_OTYPE_PUSHPULL(3) | \
234 PIN_OTYPE_OPENDRAIN(4) | \
235 PIN_OTYPE_PUSHPULL(5) | \
236 PIN_OTYPE_PUSHPULL(6) | \
237 PIN_OTYPE_PUSHPULL(7) | \
238 PIN_OTYPE_PUSHPULL(8) | \
239 PIN_OTYPE_OPENDRAIN(9) | \
240 PIN_OTYPE_OPENDRAIN(10) | \
241 PIN_OTYPE_OPENDRAIN(11) | \
242 PIN_OTYPE_PUSHPULL(12) | \
243 PIN_OTYPE_PUSHPULL(13) | \
244 PIN_OTYPE_PUSHPULL(14) | \
245 PIN_OTYPE_PUSHPULL(15))
246#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_50M(0) | \
247 PIN_OSPEED_50M(1) | \
248 PIN_OSPEED_50M(2) | \
249 PIN_OSPEED_100M(3) | \
250 PIN_OSPEED_50M(4) | \
251 PIN_OSPEED_50M(5) | \
252 PIN_OSPEED_50M(6) | \
253 PIN_OSPEED_50M(7) | \
254 PIN_OSPEED_50M(8) | \
255 PIN_OSPEED_50M(9) | \
256 PIN_OSPEED_2M(10) | \
257 PIN_OSPEED_2M(11) | \
258 PIN_OSPEED_50M(12) | \
259 PIN_OSPEED_50M(13) | \
260 PIN_OSPEED_50M(14) | \
261 PIN_OSPEED_50M(15))
262#define VAL_GPIOB_PUPDR (PIN_PUPDR_FLOATING(0) | \
263 PIN_PUPDR_FLOATING(1) | \
264 PIN_PUPDR_FLOATING(2) | \
265 PIN_PUPDR_FLOATING(3) | \
266 PIN_PUPDR_FLOATING(4) | \
267 PIN_PUPDR_FLOATING(5) | \
268 PIN_PUPDR_FLOATING(6) | \
269 PIN_PUPDR_FLOATING(7) | \
270 PIN_PUPDR_FLOATING(8) | \
271 PIN_PUPDR_FLOATING(9) | \
272 PIN_PUPDR_FLOATING(10) | \
273 PIN_PUPDR_FLOATING(11) | \
274 PIN_PUPDR_FLOATING(12) | \
275 PIN_PUPDR_FLOATING(13) | \
276 PIN_PUPDR_FLOATING(14) | \
277 PIN_PUPDR_FLOATING(15))
278#define VAL_GPIOB_ODR (PIN_ODR_HIGH(0) | \
279 PIN_ODR_HIGH(1) | \
280 PIN_ODR_HIGH(2) | \
281 PIN_ODR_HIGH(3) | \
282 PIN_ODR_HIGH(4) | \
283 PIN_ODR_HIGH(5) | \
284 PIN_ODR_HIGH(6) | \
285 PIN_ODR_HIGH(7) | \
286 PIN_ODR_HIGH(8) | \
287 PIN_ODR_HIGH(9) | \
288 PIN_ODR_HIGH(10) | \
289 PIN_ODR_HIGH(11) | \
290 PIN_ODR_HIGH(12) | \
291 PIN_ODR_HIGH(13) | \
292 PIN_ODR_HIGH(14) | \
293 PIN_ODR_HIGH(15))
294#define VAL_GPIOB_AFRL (PIN_AFIO_AF(0, 0) | \
295 PIN_AFIO_AF(1, 0) | \
296 PIN_AFIO_AF(2, 0) | \
297 PIN_AFIO_AF(3, 0) | \
298 PIN_AFIO_AF(4, 0) | \
299 PIN_AFIO_AF(5, 0) | \
300 PIN_AFIO_AF(6, 7) | \
301 PIN_AFIO_AF(7, 7))
302#define VAL_GPIOB_AFRH (PIN_AFIO_AF(8, 9) | \
303 PIN_AFIO_AF(9, 9) | \
304 PIN_AFIO_AF(10, 4) | \
305 PIN_AFIO_AF(11, 4) | \
306 PIN_AFIO_AF(12, 0) | \
307 PIN_AFIO_AF(13, 5) | \
308 PIN_AFIO_AF(14, 5) | \
309 PIN_AFIO_AF(15, 5))
310
311/*
312 * Port C setup:
313 * PC0 - Analog input (ADC2)
314 * PC1 - Analog input (ADC3)
315 * PC2 - Open Drain output 50MHz (LED3)
316 * PC3 - Analog input (ADC1)
317 * PC4 - Analog input (VBAT_MEAS)
318 * PC5 - Open Drain output 50MHz (LED4)
319 * PC6 - Alternate Push Pull output 50MHz (SERVO1-Timer3Ch1)
320 * PC7 - Alternate Push Pull output 50MHz (SERVO2-Timer3Ch2)
321 * PC8 - Alternate Push Pull output 50MHz (SERVO3-Timer3Ch3)
322 * PC9 - Alternate Push Pull output 50MHz (SERVO4-Timer3Ch4)
323 * PC10 - Alternate Push Pull output 50MHz (UART3_TX)
324 * PC11 - Digital input (UART3_RX)
325 * PC12 - Alternate Push Pull output 50MHz (PC12-UART5_TX)
326 * PC13 - Push Pull output 50MHz. (IMU_GYRO_SS-Baro_SS_SPI2)
327 * PC14 - Digital input (IMU_GYRO_DRDY)
328 * PC15 - Open Drain output 50MHz (LED5)
329 */
330#define VAL_GPIOC_MODER (PIN_MODE_INPUT(0) |\
331 PIN_MODE_INPUT(1) | \
332 PIN_MODE_OUTPUT(2) | \
333 PIN_MODE_INPUT(3) | \
334 PIN_MODE_INPUT(4) | \
335 PIN_MODE_OUTPUT(5) | \
336 PIN_MODE_ALTERNATE(6) | \
337 PIN_MODE_ALTERNATE(7) | \
338 PIN_MODE_ALTERNATE(8) | \
339 PIN_MODE_ALTERNATE(9) | \
340 PIN_MODE_ALTERNATE(10) | \
341 PIN_MODE_ALTERNATE(11) | \
342 PIN_MODE_ALTERNATE(12) | \
343 PIN_MODE_OUTPUT(13) | \
344 PIN_MODE_INPUT(14) | \
345 PIN_MODE_OUTPUT(15))
346#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(0) |\
347 PIN_OTYPE_PUSHPULL(1) | \
348 PIN_OTYPE_OPENDRAIN(2) | \
349 PIN_OTYPE_PUSHPULL(3) | \
350 PIN_OTYPE_PUSHPULL(4) | \
351 PIN_OTYPE_OPENDRAIN(5) | \
352 PIN_OTYPE_PUSHPULL(6) | \
353 PIN_OTYPE_PUSHPULL(7) | \
354 PIN_OTYPE_PUSHPULL(8) | \
355 PIN_OTYPE_PUSHPULL(9) | \
356 PIN_OTYPE_PUSHPULL(10) | \
357 PIN_OTYPE_PUSHPULL(11) | \
358 PIN_OTYPE_PUSHPULL(12) | \
359 PIN_OTYPE_PUSHPULL(13) | \
360 PIN_OTYPE_PUSHPULL(14) | \
361 PIN_OTYPE_OPENDRAIN(15))
362#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_50M(0) |\
363 PIN_OSPEED_50M(1) | \
364 PIN_OSPEED_50M(2) | \
365 PIN_OSPEED_50M(3) | \
366 PIN_OSPEED_50M(4) | \
367 PIN_OSPEED_50M(5) | \
368 PIN_OSPEED_50M(6) | \
369 PIN_OSPEED_50M(7) | \
370 PIN_OSPEED_50M(8) | \
371 PIN_OSPEED_50M(9) | \
372 PIN_OSPEED_50M(10) | \
373 PIN_OSPEED_50M(11) | \
374 PIN_OSPEED_50M(12) | \
375 PIN_OSPEED_50M(13) | \
376 PIN_OSPEED_50M(14) | \
377 PIN_OSPEED_50M(15))
378#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(0) |\
379 PIN_PUPDR_FLOATING(1) | \
380 PIN_PUPDR_FLOATING(2) | \
381 PIN_PUPDR_FLOATING(3) | \
382 PIN_PUPDR_FLOATING(4) | \
383 PIN_PUPDR_FLOATING(5) | \
384 PIN_PUPDR_FLOATING(6) | \
385 PIN_PUPDR_FLOATING(7) | \
386 PIN_PUPDR_FLOATING(8) | \
387 PIN_PUPDR_FLOATING(9) | \
388 PIN_PUPDR_FLOATING(10) | \
389 PIN_PUPDR_FLOATING(11) | \
390 PIN_PUPDR_FLOATING(12) | \
391 PIN_PUPDR_FLOATING(13) | \
392 PIN_PUPDR_FLOATING(14) | \
393 PIN_PUPDR_FLOATING(15))
394#define VAL_GPIOC_ODR (PIN_ODR_HIGH(0) | \
395 PIN_ODR_HIGH(1) | \
396 PIN_ODR_HIGH(2) | \
397 PIN_ODR_HIGH(3) | \
398 PIN_ODR_HIGH(4) | \
399 PIN_ODR_HIGH(5) | \
400 PIN_ODR_HIGH(6) | \
401 PIN_ODR_HIGH(7) | \
402 PIN_ODR_HIGH(8) | \
403 PIN_ODR_HIGH(9) | \
404 PIN_ODR_HIGH(10) | \
405 PIN_ODR_HIGH(11) | \
406 PIN_ODR_HIGH(12) | \
407 PIN_ODR_HIGH(13) | \
408 PIN_ODR_HIGH(14) | \
409 PIN_ODR_HIGH(15))
410#define VAL_GPIOC_AFRL (PIN_AFIO_AF(0, 0) |\
411 PIN_AFIO_AF(1, 0) | \
412 PIN_AFIO_AF(2, 0) | \
413 PIN_AFIO_AF(3, 0) | \
414 PIN_AFIO_AF(4, 0) | \
415 PIN_AFIO_AF(5, 0) | \
416 PIN_AFIO_AF(6, 2) | \
417 PIN_AFIO_AF(7, 2))
418#define VAL_GPIOC_AFRH (PIN_AFIO_AF(8, 2) | \
419 PIN_AFIO_AF(9, 2) | \
420 PIN_AFIO_AF(10, 7) | \
421 PIN_AFIO_AF(11, 7) | \
422 PIN_AFIO_AF(12, 8) | \
423 PIN_AFIO_AF(13, 0) | \
424 PIN_AFIO_AF(14, 0) | \
425 PIN_AFIO_AF(15, 0))
426
427/*
428 * Port D setup:
429 * PD0 - Digital input with PullUp or PullDown resistor depending on ODR. (OSC_IN).
430 * PD1 - Digital input with PullUp or PullDown resistor depending on ODR. (OSC_OUT).
431 * PD2 - Digital input (UART5_RX).
432 * PD3 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
433 * PD4 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
434 * PD5 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
435 * PD6 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
436 * PD7 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
437 * PD8 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
438 * PD9 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
439 * PD10 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
440 * PD11 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
441 * PD12 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
442 * PD13 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
443 * PD14 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
444 * PD15 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
445 */
446#define VAL_GPIOD_MODER (PIN_MODE_INPUT(0) | \
447 PIN_MODE_INPUT(1) | \
448 PIN_MODE_ALTERNATE(2) | \
449 PIN_MODE_INPUT(3) | \
450 PIN_MODE_INPUT(4) | \
451 PIN_MODE_INPUT(5) | \
452 PIN_MODE_INPUT(6) | \
453 PIN_MODE_INPUT(7) | \
454 PIN_MODE_INPUT(8) | \
455 PIN_MODE_INPUT(9) | \
456 PIN_MODE_INPUT(10) | \
457 PIN_MODE_INPUT(11) | \
458 PIN_MODE_INPUT(12) | \
459 PIN_MODE_INPUT(13) | \
460 PIN_MODE_INPUT(14) | \
461 PIN_MODE_INPUT(15))
462#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
463 PIN_OTYPE_PUSHPULL(1) | \
464 PIN_OTYPE_PUSHPULL(2) | \
465 PIN_OTYPE_PUSHPULL(3) | \
466 PIN_OTYPE_PUSHPULL(4) | \
467 PIN_OTYPE_PUSHPULL(5) |\
468 PIN_OTYPE_PUSHPULL(6) | \
469 PIN_OTYPE_PUSHPULL(7) | \
470 PIN_OTYPE_PUSHPULL(8) | \
471 PIN_OTYPE_PUSHPULL(9) | \
472 PIN_OTYPE_PUSHPULL(10) | \
473 PIN_OTYPE_PUSHPULL(11) | \
474 PIN_OTYPE_PUSHPULL(12) | \
475 PIN_OTYPE_PUSHPULL(13) | \
476 PIN_OTYPE_PUSHPULL(14) | \
477 PIN_OTYPE_PUSHPULL(15))
478#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_100M(0) | \
479 PIN_OSPEED_100M(1) | \
480 PIN_OSPEED_50M(2) | \
481 PIN_OSPEED_100M(3) | \
482 PIN_OSPEED_100M(4) | \
483 PIN_OSPEED_100M(5) | \
484 PIN_OSPEED_100M(6) | \
485 PIN_OSPEED_100M(7) | \
486 PIN_OSPEED_100M(8) | \
487 PIN_OSPEED_100M(9) | \
488 PIN_OSPEED_100M(10) | \
489 PIN_OSPEED_100M(11) | \
490 PIN_OSPEED_100M(12) | \
491 PIN_OSPEED_100M(13) | \
492 PIN_OSPEED_100M(14) | \
493 PIN_OSPEED_100M(15))
494#define VAL_GPIOD_PUPDR (PIN_PUPDR_FLOATING(0) | \
495 PIN_PUPDR_FLOATING(1) | \
496 PIN_PUPDR_FLOATING(2) | \
497 PIN_PUPDR_FLOATING(3) | \
498 PIN_PUPDR_FLOATING(4) | \
499 PIN_PUPDR_FLOATING(5) |\
500 PIN_PUPDR_FLOATING(6) | \
501 PIN_PUPDR_FLOATING(7) | \
502 PIN_PUPDR_FLOATING(8) | \
503 PIN_PUPDR_FLOATING(9) | \
504 PIN_PUPDR_FLOATING(10) | \
505 PIN_PUPDR_FLOATING(11) | \
506 PIN_PUPDR_FLOATING(12) | \
507 PIN_PUPDR_FLOATING(13) | \
508 PIN_PUPDR_FLOATING(14) | \
509 PIN_PUPDR_FLOATING(15))
510#define VAL_GPIOD_ODR (PIN_ODR_HIGH(0) | \
511 PIN_ODR_HIGH(1) | \
512 PIN_ODR_HIGH(2) | \
513 PIN_ODR_HIGH(3) | \
514 PIN_ODR_HIGH(4) | \
515 PIN_ODR_HIGH(5) | \
516 PIN_ODR_HIGH(6) | \
517 PIN_ODR_HIGH(7) | \
518 PIN_ODR_HIGH(8) | \
519 PIN_ODR_HIGH(9) | \
520 PIN_ODR_HIGH(10) | \
521 PIN_ODR_HIGH(11) | \
522 PIN_ODR_HIGH(12) | \
523 PIN_ODR_HIGH(13) | \
524 PIN_ODR_HIGH(14) | \
525 PIN_ODR_HIGH(15))
526#define VAL_GPIOD_AFRL (PIN_AFIO_AF(0, 0) | \
527 PIN_AFIO_AF(1, 0) | \
528 PIN_AFIO_AF(2, 8) | \
529 PIN_AFIO_AF(3, 0) | \
530 PIN_AFIO_AF(4, 0) | \
531 PIN_AFIO_AF(5, 0) | \
532 PIN_AFIO_AF(6, 0) | \
533 PIN_AFIO_AF(7, 0))
534#define VAL_GPIOD_AFRH (PIN_AFIO_AF(8, 0) | \
535 PIN_AFIO_AF(9, 0) | \
536 PIN_AFIO_AF(10, 0) | \
537 PIN_AFIO_AF(11, 0) | \
538 PIN_AFIO_AF(12, 0) | \
539 PIN_AFIO_AF(13, 0) | \
540 PIN_AFIO_AF(14, 0) | \
541 PIN_AFIO_AF(15, 0))
542
543/*
544 * Port E setup.
545 * PE0 - PE15 - floating input
546 */
547#define VAL_GPIOE_MODER (PIN_MODE_INPUT(0) | \
548 PIN_MODE_INPUT(1) | \
549 PIN_MODE_INPUT(2) | \
550 PIN_MODE_INPUT(3) | \
551 PIN_MODE_INPUT(4) | \
552 PIN_MODE_INPUT(5) | \
553 PIN_MODE_INPUT(6) | \
554 PIN_MODE_INPUT(7) | \
555 PIN_MODE_INPUT(8) | \
556 PIN_MODE_INPUT(9) | \
557 PIN_MODE_INPUT(10) | \
558 PIN_MODE_INPUT(11) | \
559 PIN_MODE_INPUT(12) | \
560 PIN_MODE_INPUT(13) | \
561 PIN_MODE_INPUT(14) | \
562 PIN_MODE_INPUT(15))
563#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
564 PIN_OTYPE_PUSHPULL(1) | \
565 PIN_OTYPE_PUSHPULL(2) | \
566 PIN_OTYPE_PUSHPULL(3) | \
567 PIN_OTYPE_PUSHPULL(4) | \
568 PIN_OTYPE_PUSHPULL(5) | \
569 PIN_OTYPE_PUSHPULL(6) | \
570 PIN_OTYPE_PUSHPULL(7) | \
571 PIN_OTYPE_PUSHPULL(8) | \
572 PIN_OTYPE_PUSHPULL(9) | \
573 PIN_OTYPE_PUSHPULL(10) | \
574 PIN_OTYPE_PUSHPULL(11) | \
575 PIN_OTYPE_PUSHPULL(12) | \
576 PIN_OTYPE_PUSHPULL(13) | \
577 PIN_OTYPE_PUSHPULL(14) | \
578 PIN_OTYPE_PUSHPULL(15))
579#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_100M(0) | \
580 PIN_OSPEED_100M(1) | \
581 PIN_OSPEED_100M(2) | \
582 PIN_OSPEED_100M(3) | \
583 PIN_OSPEED_100M(4) | \
584 PIN_OSPEED_100M(5) | \
585 PIN_OSPEED_100M(6) | \
586 PIN_OSPEED_100M(7) | \
587 PIN_OSPEED_100M(8) | \
588 PIN_OSPEED_100M(9) | \
589 PIN_OSPEED_100M(10) | \
590 PIN_OSPEED_100M(11) | \
591 PIN_OSPEED_100M(12) | \
592 PIN_OSPEED_100M(13) | \
593 PIN_OSPEED_100M(14) | \
594 PIN_OSPEED_100M(15))
595#define VAL_GPIOE_PUPDR (PIN_PUPDR_FLOATING(0) | \
596 PIN_PUPDR_FLOATING(1) | \
597 PIN_PUPDR_FLOATING(2) | \
598 PIN_PUPDR_FLOATING(3) | \
599 PIN_PUPDR_FLOATING(4) | \
600 PIN_PUPDR_FLOATING(5) | \
601 PIN_PUPDR_FLOATING(6) | \
602 PIN_PUPDR_FLOATING(7) | \
603 PIN_PUPDR_FLOATING(8) | \
604 PIN_PUPDR_FLOATING(9) | \
605 PIN_PUPDR_FLOATING(10) | \
606 PIN_PUPDR_FLOATING(11) | \
607 PIN_PUPDR_FLOATING(12) | \
608 PIN_PUPDR_FLOATING(13) | \
609 PIN_PUPDR_FLOATING(14) | \
610 PIN_PUPDR_FLOATING(15))
611#define VAL_GPIOE_ODR (PIN_ODR_HIGH(0) | \
612 PIN_ODR_HIGH(1) | \
613 PIN_ODR_HIGH(2) | \
614 PIN_ODR_HIGH(3) | \
615 PIN_ODR_HIGH(4) | \
616 PIN_ODR_HIGH(5) | \
617 PIN_ODR_HIGH(6) | \
618 PIN_ODR_HIGH(7) | \
619 PIN_ODR_HIGH(8) | \
620 PIN_ODR_HIGH(9) | \
621 PIN_ODR_HIGH(10) | \
622 PIN_ODR_HIGH(11) | \
623 PIN_ODR_HIGH(12) | \
624 PIN_ODR_HIGH(13) | \
625 PIN_ODR_HIGH(14) | \
626 PIN_ODR_HIGH(15))
627#define VAL_GPIOE_AFRL (PIN_AFIO_AF(0, 0) | \
628 PIN_AFIO_AF(1, 0) | \
629 PIN_AFIO_AF(2, 0) | \
630 PIN_AFIO_AF(3, 0) | \
631 PIN_AFIO_AF(4, 0) | \
632 PIN_AFIO_AF(5, 0) | \
633 PIN_AFIO_AF(6, 0) | \
634 PIN_AFIO_AF(7, 0))
635#define VAL_GPIOE_AFRH (PIN_AFIO_AF(8, 0) | \
636 PIN_AFIO_AF(9, 0) | \
637 PIN_AFIO_AF(10, 0) | \
638 PIN_AFIO_AF(11, 0) | \
639 PIN_AFIO_AF(12, 0) | \
640 PIN_AFIO_AF(13, 0) | \
641 PIN_AFIO_AF(14, 0) | \
642 PIN_AFIO_AF(15, 0))
643
644/*
645 * GPIOF setup:
646 *
647 * PF0 - PF15 (input floating).
648 */
649#define VAL_GPIOF_MODER (PIN_MODE_INPUT(0) | \
650 PIN_MODE_INPUT(1) | \
651 PIN_MODE_INPUT(2) | \
652 PIN_MODE_INPUT(3) | \
653 PIN_MODE_INPUT(4) | \
654 PIN_MODE_INPUT(5) | \
655 PIN_MODE_INPUT(6) | \
656 PIN_MODE_INPUT(7) | \
657 PIN_MODE_INPUT(8) | \
658 PIN_MODE_INPUT(9) | \
659 PIN_MODE_INPUT(10) | \
660 PIN_MODE_INPUT(11) | \
661 PIN_MODE_INPUT(12) | \
662 PIN_MODE_INPUT(13) | \
663 PIN_MODE_INPUT(14) | \
664 PIN_MODE_INPUT(15))
665#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
666 PIN_OTYPE_PUSHPULL(1) | \
667 PIN_OTYPE_PUSHPULL(2) | \
668 PIN_OTYPE_PUSHPULL(3) | \
669 PIN_OTYPE_PUSHPULL(4) | \
670 PIN_OTYPE_PUSHPULL(5) | \
671 PIN_OTYPE_PUSHPULL(6) | \
672 PIN_OTYPE_PUSHPULL(7) | \
673 PIN_OTYPE_PUSHPULL(8) | \
674 PIN_OTYPE_PUSHPULL(9) | \
675 PIN_OTYPE_PUSHPULL(10) | \
676 PIN_OTYPE_PUSHPULL(11) | \
677 PIN_OTYPE_PUSHPULL(12) | \
678 PIN_OTYPE_PUSHPULL(13) | \
679 PIN_OTYPE_PUSHPULL(14) | \
680 PIN_OTYPE_PUSHPULL(15))
681#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_100M(0) | \
682 PIN_OSPEED_100M(1) | \
683 PIN_OSPEED_100M(2) | \
684 PIN_OSPEED_100M(3) | \
685 PIN_OSPEED_100M(4) | \
686 PIN_OSPEED_100M(5) | \
687 PIN_OSPEED_100M(6) | \
688 PIN_OSPEED_100M(7) | \
689 PIN_OSPEED_100M(8) | \
690 PIN_OSPEED_100M(9) | \
691 PIN_OSPEED_100M(10) | \
692 PIN_OSPEED_100M(11) | \
693 PIN_OSPEED_100M(12) | \
694 PIN_OSPEED_100M(13) | \
695 PIN_OSPEED_100M(14) | \
696 PIN_OSPEED_100M(15))
697#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(0) | \
698 PIN_PUPDR_FLOATING(1) | \
699 PIN_PUPDR_FLOATING(2) | \
700 PIN_PUPDR_FLOATING(3) | \
701 PIN_PUPDR_FLOATING(4) | \
702 PIN_PUPDR_FLOATING(5) | \
703 PIN_PUPDR_FLOATING(6) | \
704 PIN_PUPDR_FLOATING(7) | \
705 PIN_PUPDR_FLOATING(8) | \
706 PIN_PUPDR_FLOATING(9) | \
707 PIN_PUPDR_FLOATING(10) | \
708 PIN_PUPDR_FLOATING(11) | \
709 PIN_PUPDR_FLOATING(12) | \
710 PIN_PUPDR_FLOATING(13) | \
711 PIN_PUPDR_FLOATING(14) | \
712 PIN_PUPDR_FLOATING(15))
713#define VAL_GPIOF_ODR (PIN_ODR_HIGH(0) | \
714 PIN_ODR_HIGH(1) | \
715 PIN_ODR_HIGH(2) | \
716 PIN_ODR_HIGH(3) | \
717 PIN_ODR_HIGH(4) | \
718 PIN_ODR_HIGH(5) | \
719 PIN_ODR_HIGH(6) | \
720 PIN_ODR_HIGH(7) | \
721 PIN_ODR_HIGH(8) | \
722 PIN_ODR_HIGH(9) | \
723 PIN_ODR_HIGH(10) | \
724 PIN_ODR_HIGH(11) | \
725 PIN_ODR_HIGH(12) | \
726 PIN_ODR_HIGH(13) | \
727 PIN_ODR_HIGH(14) | \
728 PIN_ODR_HIGH(15))
729#define VAL_GPIOF_AFRL (PIN_AFIO_AF(0, 0) | \
730 PIN_AFIO_AF(1, 0) | \
731 PIN_AFIO_AF(2, 0) | \
732 PIN_AFIO_AF(3, 0) | \
733 PIN_AFIO_AF(4, 0) | \
734 PIN_AFIO_AF(5, 0) | \
735 PIN_AFIO_AF(6, 0) | \
736 PIN_AFIO_AF(7, 0))
737#define VAL_GPIOF_AFRH (PIN_AFIO_AF(8, 0) | \
738 PIN_AFIO_AF(9, 0) | \
739 PIN_AFIO_AF(10, 0) | \
740 PIN_AFIO_AF(11, 0) | \
741 PIN_AFIO_AF(12, 0) | \
742 PIN_AFIO_AF(13, 0) | \
743 PIN_AFIO_AF(14, 0) | \
744 PIN_AFIO_AF(15, 0))
745
746/*
747 * GPIOG setup:
748 *
749 * PG0 - PG15 (input floating).
750 */
751#define VAL_GPIOG_MODER (PIN_MODE_INPUT(0) | \
752 PIN_MODE_INPUT(1) | \
753 PIN_MODE_INPUT(2) | \
754 PIN_MODE_INPUT(3) | \
755 PIN_MODE_INPUT(4) | \
756 PIN_MODE_INPUT(5) | \
757 PIN_MODE_INPUT(6) | \
758 PIN_MODE_INPUT(7) | \
759 PIN_MODE_INPUT(8) | \
760 PIN_MODE_INPUT(9) | \
761 PIN_MODE_INPUT(10) | \
762 PIN_MODE_INPUT(11) | \
763 PIN_MODE_INPUT(12) | \
764 PIN_MODE_INPUT(13) | \
765 PIN_MODE_INPUT(14) | \
766 PIN_MODE_INPUT(15))
767#define VAL_GPIOG_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
768 PIN_OTYPE_PUSHPULL(1) | \
769 PIN_OTYPE_PUSHPULL(2) | \
770 PIN_OTYPE_PUSHPULL(3) | \
771 PIN_OTYPE_PUSHPULL(4) | \
772 PIN_OTYPE_PUSHPULL(5) | \
773 PIN_OTYPE_PUSHPULL(6) | \
774 PIN_OTYPE_PUSHPULL(7) | \
775 PIN_OTYPE_PUSHPULL(8) | \
776 PIN_OTYPE_PUSHPULL(9) | \
777 PIN_OTYPE_PUSHPULL(10) | \
778 PIN_OTYPE_PUSHPULL(11) | \
779 PIN_OTYPE_PUSHPULL(12) | \
780 PIN_OTYPE_PUSHPULL(13) | \
781 PIN_OTYPE_PUSHPULL(14) | \
782 PIN_OTYPE_PUSHPULL(15))
783#define VAL_GPIOG_OSPEEDR (PIN_OSPEED_100M(0) | \
784 PIN_OSPEED_100M(1) | \
785 PIN_OSPEED_100M(2) | \
786 PIN_OSPEED_100M(3) | \
787 PIN_OSPEED_100M(4) | \
788 PIN_OSPEED_100M(5) | \
789 PIN_OSPEED_100M(6) | \
790 PIN_OSPEED_100M(7) | \
791 PIN_OSPEED_100M(8) | \
792 PIN_OSPEED_100M(9) | \
793 PIN_OSPEED_100M(10) | \
794 PIN_OSPEED_100M(11) | \
795 PIN_OSPEED_100M(12) | \
796 PIN_OSPEED_100M(13) | \
797 PIN_OSPEED_100M(14) | \
798 PIN_OSPEED_100M(15))
799#define VAL_GPIOG_PUPDR (PIN_PUPDR_FLOATING(0) | \
800 PIN_PUPDR_FLOATING(1) | \
801 PIN_PUPDR_FLOATING(2) | \
802 PIN_PUPDR_FLOATING(3) | \
803 PIN_PUPDR_FLOATING(4) | \
804 PIN_PUPDR_FLOATING(5) | \
805 PIN_PUPDR_FLOATING(6) | \
806 PIN_PUPDR_FLOATING(7) | \
807 PIN_PUPDR_FLOATING(8) | \
808 PIN_PUPDR_FLOATING(9) | \
809 PIN_PUPDR_FLOATING(10) | \
810 PIN_PUPDR_FLOATING(11) | \
811 PIN_PUPDR_FLOATING(12) | \
812 PIN_PUPDR_FLOATING(13) | \
813 PIN_PUPDR_FLOATING(14) | \
814 PIN_PUPDR_FLOATING(15))
815#define VAL_GPIOG_ODR (PIN_ODR_HIGH(0) | \
816 PIN_ODR_HIGH(1) | \
817 PIN_ODR_HIGH(2) | \
818 PIN_ODR_HIGH(3) | \
819 PIN_ODR_HIGH(4) | \
820 PIN_ODR_HIGH(5) | \
821 PIN_ODR_HIGH(6) | \
822 PIN_ODR_HIGH(7) | \
823 PIN_ODR_HIGH(8) | \
824 PIN_ODR_HIGH(9) | \
825 PIN_ODR_HIGH(10) | \
826 PIN_ODR_HIGH(11) | \
827 PIN_ODR_HIGH(12) | \
828 PIN_ODR_HIGH(13) | \
829 PIN_ODR_HIGH(14) | \
830 PIN_ODR_HIGH(15))
831#define VAL_GPIOG_AFRL (PIN_AFIO_AF(0, 0) | \
832 PIN_AFIO_AF(1, 0) | \
833 PIN_AFIO_AF(2, 0) | \
834 PIN_AFIO_AF(3, 0) | \
835 PIN_AFIO_AF(4, 0) | \
836 PIN_AFIO_AF(5, 0) | \
837 PIN_AFIO_AF(6, 0) | \
838 PIN_AFIO_AF(7, 0))
839#define VAL_GPIOG_AFRH (PIN_AFIO_AF(8, 0) | \
840 PIN_AFIO_AF(9, 0) | \
841 PIN_AFIO_AF(10, 0) | \
842 PIN_AFIO_AF(11, 0) | \
843 PIN_AFIO_AF(12, 0) | \
844 PIN_AFIO_AF(13, 0) | \
845 PIN_AFIO_AF(14, 0) | \
846 PIN_AFIO_AF(15, 0))
847
848/*
849 * GPIOH setup:
850 *
851 * PH0 - PH15 (input floating).
852 */
853#define VAL_GPIOH_MODER (PIN_MODE_INPUT(0) | \
854 PIN_MODE_INPUT(1) | \
855 PIN_MODE_INPUT(2) | \
856 PIN_MODE_INPUT(3) | \
857 PIN_MODE_INPUT(4) | \
858 PIN_MODE_INPUT(5) | \
859 PIN_MODE_INPUT(6) | \
860 PIN_MODE_INPUT(7) | \
861 PIN_MODE_INPUT(8) | \
862 PIN_MODE_INPUT(9) | \
863 PIN_MODE_INPUT(10) | \
864 PIN_MODE_INPUT(11) | \
865 PIN_MODE_INPUT(12) | \
866 PIN_MODE_INPUT(13) | \
867 PIN_MODE_INPUT(14) | \
868 PIN_MODE_INPUT(15))
869#define VAL_GPIOH_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
870 PIN_OTYPE_PUSHPULL(1) | \
871 PIN_OTYPE_PUSHPULL(2) | \
872 PIN_OTYPE_PUSHPULL(3) | \
873 PIN_OTYPE_PUSHPULL(4) | \
874 PIN_OTYPE_PUSHPULL(5) | \
875 PIN_OTYPE_PUSHPULL(6) | \
876 PIN_OTYPE_PUSHPULL(7) | \
877 PIN_OTYPE_PUSHPULL(8) | \
878 PIN_OTYPE_PUSHPULL(9) | \
879 PIN_OTYPE_PUSHPULL(10) | \
880 PIN_OTYPE_PUSHPULL(11) | \
881 PIN_OTYPE_PUSHPULL(12) | \
882 PIN_OTYPE_PUSHPULL(13) | \
883 PIN_OTYPE_PUSHPULL(14) | \
884 PIN_OTYPE_PUSHPULL(15))
885#define VAL_GPIOH_OSPEEDR (PIN_OSPEED_100M(0) | \
886 PIN_OSPEED_100M(1) | \
887 PIN_OSPEED_100M(2) | \
888 PIN_OSPEED_100M(3) | \
889 PIN_OSPEED_100M(4) | \
890 PIN_OSPEED_100M(5) | \
891 PIN_OSPEED_100M(6) | \
892 PIN_OSPEED_100M(7) | \
893 PIN_OSPEED_100M(8) | \
894 PIN_OSPEED_100M(9) | \
895 PIN_OSPEED_100M(10) | \
896 PIN_OSPEED_100M(11) | \
897 PIN_OSPEED_100M(12) | \
898 PIN_OSPEED_100M(13) | \
899 PIN_OSPEED_100M(14) | \
900 PIN_OSPEED_100M(15))
901#define VAL_GPIOH_PUPDR (PIN_PUPDR_FLOATING(0) | \
902 PIN_PUPDR_FLOATING(1) | \
903 PIN_PUPDR_FLOATING(2) | \
904 PIN_PUPDR_FLOATING(3) | \
905 PIN_PUPDR_FLOATING(4) | \
906 PIN_PUPDR_FLOATING(5) | \
907 PIN_PUPDR_FLOATING(6) | \
908 PIN_PUPDR_FLOATING(7) | \
909 PIN_PUPDR_FLOATING(8) | \
910 PIN_PUPDR_FLOATING(9) | \
911 PIN_PUPDR_FLOATING(10) | \
912 PIN_PUPDR_FLOATING(11) | \
913 PIN_PUPDR_FLOATING(12) | \
914 PIN_PUPDR_FLOATING(13) | \
915 PIN_PUPDR_FLOATING(14) | \
916 PIN_PUPDR_FLOATING(15))
917#define VAL_GPIOH_ODR (PIN_ODR_HIGH(0) | \
918 PIN_ODR_HIGH(1) | \
919 PIN_ODR_HIGH(2) | \
920 PIN_ODR_HIGH(3) | \
921 PIN_ODR_HIGH(4) | \
922 PIN_ODR_HIGH(5) | \
923 PIN_ODR_HIGH(6) | \
924 PIN_ODR_HIGH(7) | \
925 PIN_ODR_HIGH(8) | \
926 PIN_ODR_HIGH(9) | \
927 PIN_ODR_HIGH(10) | \
928 PIN_ODR_HIGH(11) | \
929 PIN_ODR_HIGH(12) | \
930 PIN_ODR_HIGH(13) | \
931 PIN_ODR_HIGH(14) | \
932 PIN_ODR_HIGH(15))
933#define VAL_GPIOH_AFRL (PIN_AFIO_AF(0, 0) | \
934 PIN_AFIO_AF(1, 0) | \
935 PIN_AFIO_AF(2, 0) | \
936 PIN_AFIO_AF(3, 0) | \
937 PIN_AFIO_AF(4, 0) | \
938 PIN_AFIO_AF(5, 0) | \
939 PIN_AFIO_AF(6, 0) | \
940 PIN_AFIO_AF(7, 0))
941#define VAL_GPIOH_AFRH (PIN_AFIO_AF(8, 0) | \
942 PIN_AFIO_AF(9, 0) | \
943 PIN_AFIO_AF(10, 0) | \
944 PIN_AFIO_AF(11, 0) | \
945 PIN_AFIO_AF(12, 0) | \
946 PIN_AFIO_AF(13, 0) | \
947 PIN_AFIO_AF(14, 0) | \
948 PIN_AFIO_AF(15, 0))
949
950/*
951 * GPIOI setup:
952 *
953 * PI0 - PI15 (input floating).
954 */
955#define VAL_GPIOI_MODER (PIN_MODE_INPUT(0) | \
956 PIN_MODE_INPUT(1) | \
957 PIN_MODE_INPUT(2) | \
958 PIN_MODE_INPUT(3) | \
959 PIN_MODE_INPUT(4) | \
960 PIN_MODE_INPUT(5) | \
961 PIN_MODE_INPUT(6) | \
962 PIN_MODE_INPUT(7) | \
963 PIN_MODE_INPUT(8) | \
964 PIN_MODE_INPUT(9) | \
965 PIN_MODE_INPUT(10) | \
966 PIN_MODE_INPUT(11) | \
967 PIN_MODE_INPUT(12) | \
968 PIN_MODE_INPUT(13) | \
969 PIN_MODE_INPUT(14) | \
970 PIN_MODE_INPUT(15))
971#define VAL_GPIOI_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
972 PIN_OTYPE_PUSHPULL(1) | \
973 PIN_OTYPE_PUSHPULL(2) | \
974 PIN_OTYPE_PUSHPULL(3) | \
975 PIN_OTYPE_PUSHPULL(4) | \
976 PIN_OTYPE_PUSHPULL(5) | \
977 PIN_OTYPE_PUSHPULL(6) | \
978 PIN_OTYPE_PUSHPULL(7) | \
979 PIN_OTYPE_PUSHPULL(8) | \
980 PIN_OTYPE_PUSHPULL(9) | \
981 PIN_OTYPE_PUSHPULL(10) | \
982 PIN_OTYPE_PUSHPULL(11) | \
983 PIN_OTYPE_PUSHPULL(12) | \
984 PIN_OTYPE_PUSHPULL(13) | \
985 PIN_OTYPE_PUSHPULL(14) | \
986 PIN_OTYPE_PUSHPULL(15))
987#define VAL_GPIOI_OSPEEDR (PIN_OSPEED_100M(0) | \
988 PIN_OSPEED_100M(1) | \
989 PIN_OSPEED_100M(2) | \
990 PIN_OSPEED_100M(3) | \
991 PIN_OSPEED_100M(4) | \
992 PIN_OSPEED_100M(5) | \
993 PIN_OSPEED_100M(6) | \
994 PIN_OSPEED_100M(7) | \
995 PIN_OSPEED_100M(8) | \
996 PIN_OSPEED_100M(9) | \
997 PIN_OSPEED_100M(10) | \
998 PIN_OSPEED_100M(11) | \
999 PIN_OSPEED_100M(12) | \
1000 PIN_OSPEED_100M(13) | \
1001 PIN_OSPEED_100M(14) | \
1002 PIN_OSPEED_100M(15))
1003#define VAL_GPIOI_PUPDR (PIN_PUPDR_FLOATING(0) | \
1004 PIN_PUPDR_FLOATING(1) | \
1005 PIN_PUPDR_FLOATING(2) | \
1006 PIN_PUPDR_FLOATING(3) | \
1007 PIN_PUPDR_FLOATING(4) | \
1008 PIN_PUPDR_FLOATING(5) | \
1009 PIN_PUPDR_FLOATING(6) | \
1010 PIN_PUPDR_FLOATING(7) | \
1011 PIN_PUPDR_FLOATING(8) | \
1012 PIN_PUPDR_FLOATING(9) | \
1013 PIN_PUPDR_FLOATING(10) | \
1014 PIN_PUPDR_FLOATING(11) | \
1015 PIN_PUPDR_FLOATING(12) | \
1016 PIN_PUPDR_FLOATING(13) | \
1017 PIN_PUPDR_FLOATING(14) | \
1018 PIN_PUPDR_FLOATING(15))
1019#define VAL_GPIOI_ODR (PIN_ODR_HIGH(0) | \
1020 PIN_ODR_HIGH(1) | \
1021 PIN_ODR_HIGH(2) | \
1022 PIN_ODR_HIGH(3) | \
1023 PIN_ODR_HIGH(4) | \
1024 PIN_ODR_HIGH(5) | \
1025 PIN_ODR_HIGH(6) | \
1026 PIN_ODR_HIGH(7) | \
1027 PIN_ODR_HIGH(8) | \
1028 PIN_ODR_HIGH(9) | \
1029 PIN_ODR_HIGH(10) | \
1030 PIN_ODR_HIGH(11) | \
1031 PIN_ODR_HIGH(12) | \
1032 PIN_ODR_HIGH(13) | \
1033 PIN_ODR_HIGH(14) | \
1034 PIN_ODR_HIGH(15))
1035#define VAL_GPIOI_AFRL (PIN_AFIO_AF(0, 0) | \
1036 PIN_AFIO_AF(1, 0) | \
1037 PIN_AFIO_AF(2, 0) | \
1038 PIN_AFIO_AF(3, 0) | \
1039 PIN_AFIO_AF(4, 0) | \
1040 PIN_AFIO_AF(5, 0) | \
1041 PIN_AFIO_AF(6, 0) | \
1042 PIN_AFIO_AF(7, 0))
1043#define VAL_GPIOI_AFRH (PIN_AFIO_AF(8, 0) | \
1044 PIN_AFIO_AF(9, 0) | \
1045 PIN_AFIO_AF(10, 0) | \
1046 PIN_AFIO_AF(11, 0) | \
1047 PIN_AFIO_AF(12, 0) | \
1048 PIN_AFIO_AF(13, 0) | \
1049 PIN_AFIO_AF(14, 0) | \
1050 PIN_AFIO_AF(15, 0))
1051
1052
1053/*
1054 * AHB_CLK
1055 */
1056#define AHB_CLK STM32_HCLK
1057
1058
1059/*
1060 * LEDs
1061 */
1062/* 1 red, on PA8 */
1063#ifndef USE_LED_1
1064#define USE_LED_1 1
1065#endif
1066#define LED_1_GPIO GPIOA
1067#define LED_1_GPIO_PIN 8
1068#define LED_1_GPIO_ON gpio_clear
1069#define LED_1_GPIO_OFF gpio_set
1070
1071/* 2 green, shared with JTAG_TRST */
1072#ifndef USE_LED_2
1073#define USE_LED_2 1
1074#endif
1075#define LED_2_GPIO GPIOB
1076#define LED_2_GPIO_PIN 4
1077#define LED_2_GPIO_ON gpio_clear
1078#define LED_2_GPIO_OFF gpio_set
1079
1080/* 3 green, shared with ADC12 (ADC_6 on connector ANALOG2) */
1081#ifndef USE_LED_3
1082#define USE_LED_3 1
1083#endif
1084#define LED_3_GPIO GPIOC
1085#define LED_3_GPIO_PIN 2
1086#define LED_3_GPIO_ON gpio_clear
1087#define LED_3_GPIO_OFF gpio_set
1088
1089/* 4 red, shared with ADC15 (ADC_4 on connector ANALOG2) */
1090#ifndef USE_LED_4
1091#define USE_LED_4 1
1092#endif
1093#define LED_4_GPIO GPIOC
1094#define LED_4_GPIO_PIN 5
1095#define LED_4_GPIO_ON gpio_clear
1096#define LED_4_GPIO_OFF gpio_set
1097
1098/* 5 green, on PC15 */
1099#ifndef USE_LED_5
1100#define USE_LED_5 0
1101#endif
1102#define LED_5_GPIO GPIOC
1103#define LED_5_GPIO_PIN 15
1104#define LED_5_GPIO_ON gpio_set
1105#define LED_5_GPIO_OFF gpio_clear
1106
1107/*
1108 * ADCs
1109 */
1110// AUX 1
1111#if USE_ADC_1
1112#define AD1_1_CHANNEL ADC_CHANNEL_IN13
1113#define ADC_1 AD1_1
1114#define ADC_1_GPIO_PORT GPIOC
1115#define ADC_1_GPIO_PIN GPIO3
1116#endif
1117
1118// AUX 2
1119#if USE_ADC_2
1120#define AD1_2_CHANNEL ADC_CHANNEL_IN10
1121#define ADC_2 AD1_2
1122#define ADC_2_GPIO_PORT GPIOC
1123#define ADC_2_GPIO_PIN GPIO0
1124#endif
1125
1126// AUX 3
1127#if USE_ADC_3
1128#define AD1_3_CHANNEL ADC_CHANNEL_IN11
1129#define ADC_3 AD1_3
1130#define ADC_3_GPIO_PORT GPIOC
1131#define ADC_3_GPIO_PIN GPIO1
1132#endif
1133
1134// Internal ADC for battery enabled by default
1135#ifndef USE_ADC_4
1136#define USE_ADC_4 1
1137#endif
1138#if USE_ADC_4
1139#define AD1_4_CHANNEL ADC_CHANNEL_IN14
1140#define ADC_4 AD1_4
1141#define ADC_4_GPIO_PORT GPIOC
1142#define ADC_4_GPIO_PIN GPIO4
1143#endif
1144
1145// Internal Temperature sensor enabled by default
1146#ifndef USE_ADC_5
1147#define USE_ADC_5 1
1148#define USE_ADC_SENSOR 1
1149#endif
1150#if USE_ADC_5
1151#define AD1_5_CHANNEL ADC_CHANNEL_SENSOR
1152#define ADC_5 AD1_5
1153#define ADC_5_GPIO_PORT GPIOC
1154#define ADC_5_GPIO_PIN GPIO4
1155#endif
1156
1157
1158
1159/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
1160#ifndef ADC_CHANNEL_VSUPPLY
1161#define ADC_CHANNEL_VSUPPLY ADC_4
1162#endif
1163
1164#define DefaultVoltageOfAdc(adc) (0.004489*adc)
1165
1166/*
1167 * PWM defines
1168 * enable TIM3, TIM4 and TIM5 by default
1169 */
1170
1171#ifndef USE_PWM_TIM3
1172#define USE_PWM_TIM3 1
1173#endif
1174
1175#ifndef USE_PWM_TIM4
1176#ifdef USE_SERVOS_7AND8
1177#define USE_PWM_TIM4 1
1178#else
1179#define USE_PWM_TIM4 0
1180#endif
1181#endif
1182
1183#ifndef USE_PWM_TIM5
1184#define USE_PWM_TIM5 1
1185#endif
1186
1187#ifndef USE_PWM0
1188#define USE_PWM0 1
1189#endif
1190#if USE_PWM0
1191#define PWM_SERVO_0 0
1192#define PWM_SERVO_0_GPIO GPIOC
1193#define PWM_SERVO_0_PIN GPIO6
1194#define PWM_SERVO_0_AF GPIO_AF2
1195#define PWM_SERVO_0_DRIVER PWMD3
1196#define PWM_SERVO_0_CHANNEL 0
1197#define PWM_SERVO_0_CONF pwmcfg3
1198#endif
1199
1200#ifndef USE_PWM1
1201#define USE_PWM1 1
1202#endif
1203#if USE_PWM1
1204#define PWM_SERVO_1 1
1205#define PWM_SERVO_1_GPIO GPIOC
1206#define PWM_SERVO_1_PIN GPIO7
1207#define PWM_SERVO_1_AF GPIO_AF2
1208#define PWM_SERVO_1_DRIVER PWMD3
1209#define PWM_SERVO_1_CHANNEL 1
1210#define PWM_SERVO_1_CONF pwmcfg3
1211#endif
1212
1213#ifndef USE_PWM2
1214#define USE_PWM2 1
1215#endif
1216#if USE_PWM2
1217#define PWM_SERVO_2 2
1218#define PWM_SERVO_2_GPIO GPIOC
1219#define PWM_SERVO_2_PIN GPIO8
1220#define PWM_SERVO_2_AF GPIO_AF2
1221#define PWM_SERVO_2_DRIVER PWMD3
1222#define PWM_SERVO_2_CHANNEL 2
1223#define PWM_SERVO_2_CONF pwmcfg3
1224#endif
1225
1226#ifndef USE_PWM3
1227#define USE_PWM3 1
1228#endif
1229#if USE_PWM3
1230#define PWM_SERVO_3 3
1231#define PWM_SERVO_3_GPIO GPIOC
1232#define PWM_SERVO_3_PIN GPIO9
1233#define PWM_SERVO_3_AF GPIO_AF2
1234#define PWM_SERVO_3_DRIVER PWMD3
1235#define PWM_SERVO_3_CHANNEL 3
1236#define PWM_SERVO_3_CONF pwmcfg3
1237#endif
1238
1239#ifndef USE_PWM4
1240#define USE_PWM4 1
1241#endif
1242#if USE_PWM4
1243#define PWM_SERVO_4 4
1244#define PWM_SERVO_4_GPIO GPIOA
1245#define PWM_SERVO_4_PIN GPIO0
1246#define PWM_SERVO_4_AF GPIO_AF2
1247#define PWM_SERVO_4_DRIVER PWMD5
1248#define PWM_SERVO_4_CHANNEL 0
1249#define PWM_SERVO_4_CONF pwmcfg5
1250#endif
1251
1252#ifndef USE_PWM5
1253#define USE_PWM5 1
1254#endif
1255#if USE_PWM5
1256#define PWM_SERVO_5 5
1257#define PWM_SERVO_5_GPIO GPIOA
1258#define PWM_SERVO_5_PIN GPIO1
1259#define PWM_SERVO_5_AF GPIO_AF2
1260#define PWM_SERVO_5_DRIVER PWMD5
1261#define PWM_SERVO_5_CHANNEL 1
1262#define PWM_SERVO_5_CONF pwmcfg5
1263#endif
1264
1265
1266#if USE_SERVOS_7AND8
1267 #if USE_I2C1
1268 #error "You cannot USE_SERVOS_7AND8 and USE_I2C1 at the same time"
1269 #else /* !USE_I2C1 */
1270 #if USE_PWM6
1271 #define PWM_SERVO_6 6
1272 #define PWM_SERVO_6_GPIO GPIOB
1273 #define PWM_SERVO_6_PIN GPIO6
1274 #define PWM_SERVO_6_AF GPIO_AF2
1275 #define PWM_SERVO_6_DRIVER PWMD4
1276 #define PWM_SERVO_6_CHANNEL 0
1277 #define PWM_SERVO_6_CONF pwmcfg4
1278 #endif
1279
1280 #if USE_PWM7
1281 #define PWM_SERVO_7 7
1282 #define PWM_SERVO_7_GPIO GPIOB
1283 #define PWM_SERVO_7_PIN GPIO7
1284 #define PWM_SERVO_7_AF GPIO_AF2
1285 #define PWM_SERVO_7_DRIVER PWMD4
1286 #define PWM_SERVO_7_CHANNEL 1
1287 #define PWM_SERVO_7_CONF pwmcfg4
1288 #endif
1289 #endif /* USE_I2C1 */
1290#endif /* USE_SERVOS_7AND8 */
1291
1292
1296#define RC_PPM_TICKS_PER_USEC 6
1297#define PPM_TIMER_FREQUENCY 6000000
1298#define PPM_CHANNEL ICU_CHANNEL_1
1299#define PPM_TIMER ICUD1
1300
1304#define LINE_I2C1_SCL PAL_LINE(GPIOB, 6U)
1305#define LINE_I2C1_SDA PAL_LINE(GPIOB, 7U)
1306#define I2C1_CLOCK_SPEED 400000
1307#define I2C1_CFG_DEF { \
1308 OPMODE_I2C, \
1309 I2C1_CLOCK_SPEED, \
1310 FAST_DUTY_CYCLE_2, \
1311 }
1312
1313#define LINE_I2C2_SCL PAL_LINE(GPIOB, 10U)
1314#define LINE_I2C2_SDA PAL_LINE(GPIOB, 11U)
1315#define I2C2_CLOCK_SPEED 400000
1316#define I2C2_CFG_DEF { \
1317 OPMODE_I2C, \
1318 I2C2_CLOCK_SPEED, \
1319 FAST_DUTY_CYCLE_2, \
1320 }
1321
1325#define SPI_SELECT_SLAVE0_PORT GPIOA
1326#define SPI_SELECT_SLAVE0_PIN GPIO15
1327
1328#define SPI_SELECT_SLAVE1_PORT GPIOA
1329#define SPI_SELECT_SLAVE1_PIN GPIO4
1330
1331#define SPI_SELECT_SLAVE2_PORT GPIOB
1332#define SPI_SELECT_SLAVE2_PIN GPIO12
1333
1334#define SPI_SELECT_SLAVE3_PORT GPIOC
1335#define SPI_SELECT_SLAVE3_PIN GPIO13
1336
1337#define SPI_SELECT_SLAVE4_PORT GPIOC
1338#define SPI_SELECT_SLAVE4_PIN GPIO12
1339
1340#define SPI_SELECT_SLAVE5_PORT GPIOC
1341#define SPI_SELECT_SLAVE5_PIN GPIO4
1342
1343#define SPI1_GPIO_PORT_NSS GPIOA
1344#define SPI1_GPIO_NSS GPIO4
1345
1346#define SPI2_GPIO_PORT_NSS GPIOB
1347#define SPI2_GPIO_NSS GPIO12
1348
1349#define SPI3_GPIO_PORT_NSS GPIO
1350
1357#ifndef USE_BARO_BOARD
1358#define USE_BARO_BOARD 1
1359#endif
1360
1361/*
1362 * Actuators for fixedwing
1363 */
1364 /* Default actuators driver */
1365#define DEFAULT_ACTUATORS "modules/actuators/actuators_pwm.h"
1366#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
1367#define ActuatorsDefaultInit() ActuatorsPwmInit()
1368#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
1369
1370#if !defined(_FROM_ASM_)
1371#ifdef __cplusplus
1372extern "C" {
1373#endif
1374 void boardInit(void);
1375#ifdef __cplusplus
1376}
1377#endif
1378#endif /* _FROM_ASM_ */
1379
1380#endif /* _BOARD_H_ */
void boardInit(void)
Board-specific initialization code.
Definition board.c:317