Paparazzi UAS  v5.12_stable-4-g9b43e9b
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_ECU
28 #define BOARD_NAME "STMicroelectronics STM32F4-Ecu"
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 25000000
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 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
82  * PA1 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
83  * PA2 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
84  * PA3 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
85  * PA4 - Analog output (DAC1) - set up as INPUT ANALOG (per reference manual)
86  * PA5 - Analog output (DAC2) - set up as INPUT ANALOG (per reference manual)
87  * PA6 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
88  * PA7 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
89  * PA8 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
90  * PA9 - Alternate output (UART1_Tx)
91  * PA10 - Alternate input (UART1_Rx)
92  * PA11 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
93  * PA12 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
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_INPUT(0)| \
99  PIN_MODE_INPUT(1) | \
100  PIN_MODE_INPUT(2) | \
101  PIN_MODE_INPUT(3) | \
102  PIN_MODE_INPUT(4) | \
103  PIN_MODE_INPUT(5) | \
104  PIN_MODE_INPUT(6) | \
105  PIN_MODE_INPUT(7) | \
106  PIN_MODE_INPUT(8) | \
107  PIN_MODE_ALTERNATE(9) | \
108  PIN_MODE_ALTERNATE(10) | \
109  PIN_MODE_INPUT(11) | \
110  PIN_MODE_INPUT(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_PUSHPULL(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_100M(0) | \
131  PIN_OSPEED_100M(1) | \
132  PIN_OSPEED_100M(2) | \
133  PIN_OSPEED_100M(3) | \
134  PIN_OSPEED_100M(4) | \
135  PIN_OSPEED_100M(5) | \
136  PIN_OSPEED_100M(6) | \
137  PIN_OSPEED_100M(7) | \
138  PIN_OSPEED_100M(8) | \
139  PIN_OSPEED_100M(9) | \
140  PIN_OSPEED_100M(10) | \
141  PIN_OSPEED_100M(11) | \
142  PIN_OSPEED_100M(12) | \
143  PIN_OSPEED_100M(13) | \
144  PIN_OSPEED_100M(14) | \
145  PIN_OSPEED_100M(15))
146 #define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLDOWN(0) | \
147  PIN_PUPDR_PULLDOWN(1) | \
148  PIN_PUPDR_PULLDOWN(2) | \
149  PIN_PUPDR_PULLDOWN(3) | \
150  PIN_PUPDR_FLOATING(4) | \
151  PIN_PUPDR_FLOATING(5) | \
152  PIN_PUPDR_PULLDOWN(6) | \
153  PIN_PUPDR_PULLDOWN(7) | \
154  PIN_PUPDR_PULLDOWN(8) | \
155  PIN_PUPDR_FLOATING(9) | \
156  PIN_PUPDR_FLOATING(10) | \
157  PIN_PUPDR_PULLDOWN(11) | \
158  PIN_PUPDR_PULLDOWN(12) | \
159  PIN_PUPDR_FLOATING(13) | \
160  PIN_PUPDR_FLOATING(14) | \
161  PIN_PUPDR_FLOATING(15))
162 #define VAL_GPIOA_ODR (PIN_ODR_LOW(0) | \
163  PIN_ODR_LOW(1) | \
164  PIN_ODR_LOW(2) | \
165  PIN_ODR_LOW(3) | \
166  PIN_ODR_HIGH(4) | \
167  PIN_ODR_HIGH(5) | \
168  PIN_ODR_LOW(6) | \
169  PIN_ODR_LOW(7) | \
170  PIN_ODR_LOW(8) | \
171  PIN_ODR_HIGH(9) | \
172  PIN_ODR_LOW(10) | \
173  PIN_ODR_LOW(11) | \
174  PIN_ODR_LOW(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, 0) | \
179  PIN_AFIO_AF(1, 0) | \
180  PIN_AFIO_AF(2, 0) | \
181  PIN_AFIO_AF(3, 0) | \
182  PIN_AFIO_AF(4, 0) | \
183  PIN_AFIO_AF(5, 0) | \
184  PIN_AFIO_AF(6, 0) | \
185  PIN_AFIO_AF(7, 0))
186 #define VAL_GPIOA_AFRH (PIN_AFIO_AF(8, 0) | \
187  PIN_AFIO_AF(9, 7) | \
188  PIN_AFIO_AF(10, 7) | \
189  PIN_AFIO_AF(11, 0) | \
190  PIN_AFIO_AF(12, 0) | \
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 with PullUp or PullDown resistor depending on ODR. (unconnected)
198  * PB1 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
199  * PB2 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
200  * PB3 - Digital input (JTAG_TDO/SWD)
201  * PB4 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
202  * PB5 - Alternate Digital input. (CAN2_RX)
203  * PB6 - Alternate Open Drain output 50MHz. (CAN2_TX)
204  * PB7 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
205  * PB8 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
206  * PB9 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
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_SPI2_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_INPUT(4) | \
219  PIN_MODE_ALTERNATE(5) | \
220  PIN_MODE_ALTERNATE(6) | \
221  PIN_MODE_INPUT(7) | \
222  PIN_MODE_INPUT(8) | \
223  PIN_MODE_INPUT(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_PUSHPULL(4) | \
235  PIN_OTYPE_PUSHPULL(5) | \
236  PIN_OTYPE_PUSHPULL(6) | \
237  PIN_OTYPE_PUSHPULL(7) | \
238  PIN_OTYPE_PUSHPULL(8) | \
239  PIN_OTYPE_PUSHPULL(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_100M(0) | \
247  PIN_OSPEED_100M(1) | \
248  PIN_OSPEED_100M(2) | \
249  PIN_OSPEED_100M(3) | \
250  PIN_OSPEED_100M(4) | \
251  PIN_OSPEED_100M(5) | \
252  PIN_OSPEED_50M(6) | \
253  PIN_OSPEED_100M(7) | \
254  PIN_OSPEED_100M(8) | \
255  PIN_OSPEED_100M(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_PULLDOWN(0) | \
263  PIN_PUPDR_PULLDOWN(1) | \
264  PIN_PUPDR_PULLDOWN(2) | \
265  PIN_PUPDR_FLOATING(3) | \
266  PIN_PUPDR_PULLDOWN(4) | \
267  PIN_PUPDR_FLOATING(5) | \
268  PIN_PUPDR_FLOATING(6) | \
269  PIN_PUPDR_PULLDOWN(7) | \
270  PIN_PUPDR_PULLDOWN(8) | \
271  PIN_PUPDR_PULLDOWN(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_LOW(0) | \
279  PIN_ODR_LOW(1) | \
280  PIN_ODR_LOW(2) | \
281  PIN_ODR_HIGH(3) | \
282  PIN_ODR_LOW(4) | \
283  PIN_ODR_HIGH(5) | \
284  PIN_ODR_HIGH(6) | \
285  PIN_ODR_LOW(7) | \
286  PIN_ODR_LOW(8) | \
287  PIN_ODR_LOW(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, 9) | \
300  PIN_AFIO_AF(6, 9) | \
301  PIN_AFIO_AF(7, 0))
302 #define VAL_GPIOB_AFRH (PIN_AFIO_AF(8, 0) | \
303  PIN_AFIO_AF(9, 0) | \
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 (ADC1)
314  * PC1 - Analog input (ADC2)
315  * PC2 - Analog input (ADC3)
316  * PC3 - Analog input (ADC4)
317  * PC4 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
318  * PC5 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
319  * PC6 - Alternate Push Pull output 50MHz (UART6_TX)
320  * PC7 - Alternate input (UART7_RX)
321  * PC8 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
322  * PC9 - Push Pull output 50MHz (SPI3_NSS)
323  * PC10 - Alternate Push Pull output 50MHz (SPI3_SCK)
324  * PC11 - Alternate Digital input (SPI3_MISO)
325  * PC12 - Alternate Push Pull output 50MHz (SPI3_MOSI)
326  * PC13 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
327  * PC14 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
328  * PC15 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected)
329  */
330 #define VAL_GPIOC_MODER (PIN_MODE_INPUT(0) |\
331  PIN_MODE_INPUT(1) | \
332  PIN_MODE_INPUT(2) | \
333  PIN_MODE_INPUT(3) | \
334  PIN_MODE_INPUT(4) | \
335  PIN_MODE_INPUT(5) | \
336  PIN_MODE_ALTERNATE(6) | \
337  PIN_MODE_ALTERNATE(7) | \
338  PIN_MODE_INPUT(8) | \
339  PIN_MODE_OUTPUT(9) | \
340  PIN_MODE_ALTERNATE(10) | \
341  PIN_MODE_ALTERNATE(11) | \
342  PIN_MODE_ALTERNATE(12) | \
343  PIN_MODE_INPUT(13) | \
344  PIN_MODE_INPUT(14) | \
345  PIN_MODE_INPUT(15))
346 #define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(0) |\
347  PIN_OTYPE_PUSHPULL(1) | \
348  PIN_OTYPE_PUSHPULL(2) | \
349  PIN_OTYPE_PUSHPULL(3) | \
350  PIN_OTYPE_PUSHPULL(4) | \
351  PIN_OTYPE_PUSHPULL(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_PUSHPULL(15))
362 #define VAL_GPIOC_OSPEEDR (PIN_OSPEED_100M(0) |\
363  PIN_OSPEED_100M(1) | \
364  PIN_OSPEED_100M(2) | \
365  PIN_OSPEED_100M(3) | \
366  PIN_OSPEED_100M(4) | \
367  PIN_OSPEED_100M(5) | \
368  PIN_OSPEED_50M(6) | \
369  PIN_OSPEED_50M(7) | \
370  PIN_OSPEED_100M(8) | \
371  PIN_OSPEED_50M(9) | \
372  PIN_OSPEED_50M(10) | \
373  PIN_OSPEED_50M(11) | \
374  PIN_OSPEED_50M(12) | \
375  PIN_OSPEED_100M(13) | \
376  PIN_OSPEED_100M(14) | \
377  PIN_OSPEED_100M(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_PULLDOWN(4) | \
383  PIN_PUPDR_PULLDOWN(5) | \
384  PIN_PUPDR_FLOATING(6) | \
385  PIN_PUPDR_FLOATING(7) | \
386  PIN_PUPDR_PULLDOWN(8) | \
387  PIN_PUPDR_FLOATING(9) | \
388  PIN_PUPDR_FLOATING(10) | \
389  PIN_PUPDR_FLOATING(11) | \
390  PIN_PUPDR_FLOATING(12) | \
391  PIN_PUPDR_PULLDOWN(13) | \
392  PIN_PUPDR_PULLDOWN(14) | \
393  PIN_PUPDR_PULLDOWN(15))
394 #define VAL_GPIOC_ODR (PIN_ODR_LOW(0) | \
395  PIN_ODR_LOW(1) | \
396  PIN_ODR_LOW(2) | \
397  PIN_ODR_LOW(3) | \
398  PIN_ODR_LOW(4) | \
399  PIN_ODR_LOW(5) | \
400  PIN_ODR_HIGH(6) | \
401  PIN_ODR_HIGH(7) | \
402  PIN_ODR_LOW(8) | \
403  PIN_ODR_HIGH(9) | \
404  PIN_ODR_HIGH(10) | \
405  PIN_ODR_HIGH(11) | \
406  PIN_ODR_HIGH(12) | \
407  PIN_ODR_LOW(13) | \
408  PIN_ODR_LOW(14) | \
409  PIN_ODR_LOW(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, 8) | \
417  PIN_AFIO_AF(7, 8))
418 #define VAL_GPIOC_AFRH (PIN_AFIO_AF(8, 0) | \
419  PIN_AFIO_AF(9, 0) | \
420  PIN_AFIO_AF(10, 6) | \
421  PIN_AFIO_AF(11, 6) | \
422  PIN_AFIO_AF(12, 6) | \
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 - Alternate Digital input. (CAN1_RX).
430  * PD1 - Alternate Open Drain output 50MHz (CAN1_TX).
431  * PD2 - Digital input (CARD_DETECT).
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 - Alternate Push Pull output 50MHz. (UART2_TX).
435  * PD6 - Alternate Digital input. (UART2_RX).
436  * PD7 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
437  * PD8 - Alternate Push Pull output 50MHz. (UART3_TX).
438  * PD9 - Alternate Digital input. (UART3_RX).
439  * PD10 - Digital output. (DOUT_LS1).
440  * PD11 - Digital output. (DOUT_LS2).
441  * PD12 - Digital output. (DOUT_LS3).
442  * PD13 - Digital output. (DOUT_LS4).
443  * PD14 - Digital output. (DOUT_HS1).
444  * PD15 - Digital output. (DOUT_HS2).
445  */
446 #define VAL_GPIOD_MODER (PIN_MODE_ALTERNATE(0) | \
447  PIN_MODE_ALTERNATE(1) | \
448  PIN_MODE_INPUT(2) | \
449  PIN_MODE_INPUT(3) | \
450  PIN_MODE_INPUT(4) | \
451  PIN_MODE_ALTERNATE(5) | \
452  PIN_MODE_ALTERNATE(6) | \
453  PIN_MODE_INPUT(7) | \
454  PIN_MODE_ALTERNATE(8) | \
455  PIN_MODE_ALTERNATE(9) | \
456  PIN_MODE_OUTPUT(10) | \
457  PIN_MODE_OUTPUT(11) | \
458  PIN_MODE_OUTPUT(12) | \
459  PIN_MODE_OUTPUT(13) | \
460  PIN_MODE_OUTPUT(14) | \
461  PIN_MODE_OUTPUT(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_50M(0) | \
479  PIN_OSPEED_50M(1) | \
480  PIN_OSPEED_100M(2) | \
481  PIN_OSPEED_100M(3) | \
482  PIN_OSPEED_100M(4) | \
483  PIN_OSPEED_50M(5) | \
484  PIN_OSPEED_50M(6) | \
485  PIN_OSPEED_100M(7) | \
486  PIN_OSPEED_50M(8) | \
487  PIN_OSPEED_50M(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_LOW(3) | \
514  PIN_ODR_LOW(4) | \
515  PIN_ODR_HIGH(5) | \
516  PIN_ODR_HIGH(6) | \
517  PIN_ODR_LOW(7) | \
518  PIN_ODR_HIGH(8) | \
519  PIN_ODR_HIGH(9) | \
520  PIN_ODR_LOW(10) | \
521  PIN_ODR_LOW(11) | \
522  PIN_ODR_LOW(12) | \
523  PIN_ODR_LOW(13) | \
524  PIN_ODR_LOW(14) | \
525  PIN_ODR_LOW(15))
526 #define VAL_GPIOD_AFRL (PIN_AFIO_AF(0, 9) | \
527  PIN_AFIO_AF(1, 9) | \
528  PIN_AFIO_AF(2, 0) | \
529  PIN_AFIO_AF(3, 0) | \
530  PIN_AFIO_AF(4, 0) | \
531  PIN_AFIO_AF(5, 7) | \
532  PIN_AFIO_AF(6, 7) | \
533  PIN_AFIO_AF(7, 0))
534 #define VAL_GPIOD_AFRH (PIN_AFIO_AF(8, 7) | \
535  PIN_AFIO_AF(9, 7) | \
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 - Digital input (IMU_MAG_DRDY)
546  * PE1 - Digital input (IMU_ACC_DRDY)
547  * PE2 - Digital input (IMU_GYRO_DRDY)
548  * PE3 - Push Pull output 50MHz. (IMU_GYRO_SS)
549  * PE4 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
550  * PE5 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
551  * PE6 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
552  * PE7 - Digital input. (DIN1).
553  * PE8 - Digital input. (DIN2).
554  * PE9 - Digital input. (DIN3).
555  * PE10 - Digital input. (DIN4).
556  * PE11 - Digital input. (DIN5).
557  * PE12 - Digital input. (DIN6).
558  * PE13 - Digital input. (DIN7).
559  * PE14 - Digital input. (DIN8).
560  * PE15 - Digital input with PullUp or PullDown resistor depending on ODR. (unconnected).
561  */
562 #define VAL_GPIOE_MODER (PIN_MODE_INPUT(0) | \
563  PIN_MODE_INPUT(1) | \
564  PIN_MODE_INPUT(2) | \
565  PIN_MODE_OUTPUT(3) | \
566  PIN_MODE_INPUT(4) | \
567  PIN_MODE_INPUT(5) | \
568  PIN_MODE_INPUT(6) | \
569  PIN_MODE_INPUT(7) | \
570  PIN_MODE_INPUT(8) | \
571  PIN_MODE_INPUT(9) | \
572  PIN_MODE_INPUT(10) | \
573  PIN_MODE_INPUT(11) | \
574  PIN_MODE_INPUT(12) | \
575  PIN_MODE_INPUT(13) | \
576  PIN_MODE_INPUT(14) | \
577  PIN_MODE_INPUT(15))
578 #define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
579  PIN_OTYPE_PUSHPULL(1) | \
580  PIN_OTYPE_PUSHPULL(2) | \
581  PIN_OTYPE_PUSHPULL(3) | \
582  PIN_OTYPE_PUSHPULL(4) | \
583  PIN_OTYPE_PUSHPULL(5) | \
584  PIN_OTYPE_PUSHPULL(6) | \
585  PIN_OTYPE_PUSHPULL(7) | \
586  PIN_OTYPE_PUSHPULL(8) | \
587  PIN_OTYPE_PUSHPULL(9) | \
588  PIN_OTYPE_PUSHPULL(10) | \
589  PIN_OTYPE_PUSHPULL(11) | \
590  PIN_OTYPE_PUSHPULL(12) | \
591  PIN_OTYPE_PUSHPULL(13) | \
592  PIN_OTYPE_PUSHPULL(14) | \
593  PIN_OTYPE_PUSHPULL(15))
594 #define VAL_GPIOE_OSPEEDR (PIN_OSPEED_100M(0) | \
595  PIN_OSPEED_100M(1) | \
596  PIN_OSPEED_100M(2) | \
597  PIN_OSPEED_50M(3) | \
598  PIN_OSPEED_100M(4) | \
599  PIN_OSPEED_100M(5) | \
600  PIN_OSPEED_100M(6) | \
601  PIN_OSPEED_100M(7) | \
602  PIN_OSPEED_100M(8) | \
603  PIN_OSPEED_100M(9) | \
604  PIN_OSPEED_100M(10) | \
605  PIN_OSPEED_100M(11) | \
606  PIN_OSPEED_100M(12) | \
607  PIN_OSPEED_100M(13) | \
608  PIN_OSPEED_100M(14) | \
609  PIN_OSPEED_100M(15))
610 #define VAL_GPIOE_PUPDR (PIN_PUPDR_FLOATING(0) | \
611  PIN_PUPDR_FLOATING(1) | \
612  PIN_PUPDR_FLOATING(2) | \
613  PIN_PUPDR_FLOATING(3) | \
614  PIN_PUPDR_FLOATING(4) | \
615  PIN_PUPDR_FLOATING(5) | \
616  PIN_PUPDR_FLOATING(6) | \
617  PIN_PUPDR_FLOATING(7) | \
618  PIN_PUPDR_FLOATING(8) | \
619  PIN_PUPDR_FLOATING(9) | \
620  PIN_PUPDR_FLOATING(10) | \
621  PIN_PUPDR_FLOATING(11) | \
622  PIN_PUPDR_FLOATING(12) | \
623  PIN_PUPDR_FLOATING(13) | \
624  PIN_PUPDR_FLOATING(14) | \
625  PIN_PUPDR_FLOATING(15))
626 #define VAL_GPIOE_ODR (PIN_ODR_HIGH(0) | \
627  PIN_ODR_HIGH(1) | \
628  PIN_ODR_HIGH(2) | \
629  PIN_ODR_HIGH(3) | \
630  PIN_ODR_HIGH(4) | \
631  PIN_ODR_HIGH(5) | \
632  PIN_ODR_HIGH(6) | \
633  PIN_ODR_HIGH(7) | \
634  PIN_ODR_HIGH(8) | \
635  PIN_ODR_HIGH(9) | \
636  PIN_ODR_HIGH(10) | \
637  PIN_ODR_HIGH(11) | \
638  PIN_ODR_HIGH(12) | \
639  PIN_ODR_HIGH(13) | \
640  PIN_ODR_HIGH(14) | \
641  PIN_ODR_HIGH(15))
642 #define VAL_GPIOE_AFRL (PIN_AFIO_AF(0, 0) | \
643  PIN_AFIO_AF(1, 0) | \
644  PIN_AFIO_AF(2, 0) | \
645  PIN_AFIO_AF(3, 0) | \
646  PIN_AFIO_AF(4, 0) | \
647  PIN_AFIO_AF(5, 0) | \
648  PIN_AFIO_AF(6, 0) | \
649  PIN_AFIO_AF(7, 0))
650 #define VAL_GPIOE_AFRH (PIN_AFIO_AF(8, 0) | \
651  PIN_AFIO_AF(9, 0) | \
652  PIN_AFIO_AF(10, 0) | \
653  PIN_AFIO_AF(11, 0) | \
654  PIN_AFIO_AF(12, 0) | \
655  PIN_AFIO_AF(13, 0) | \
656  PIN_AFIO_AF(14, 0) | \
657  PIN_AFIO_AF(15, 0))
658 
659 /*
660  * GPIOF setup:
661  *
662  * PF0 - PF15 (input floating).
663  */
664 #define VAL_GPIOF_MODER (PIN_MODE_INPUT(0) | \
665  PIN_MODE_INPUT(1) | \
666  PIN_MODE_INPUT(2) | \
667  PIN_MODE_INPUT(3) | \
668  PIN_MODE_INPUT(4) | \
669  PIN_MODE_INPUT(5) | \
670  PIN_MODE_INPUT(6) | \
671  PIN_MODE_INPUT(7) | \
672  PIN_MODE_INPUT(8) | \
673  PIN_MODE_INPUT(9) | \
674  PIN_MODE_INPUT(10) | \
675  PIN_MODE_INPUT(11) | \
676  PIN_MODE_INPUT(12) | \
677  PIN_MODE_INPUT(13) | \
678  PIN_MODE_INPUT(14) | \
679  PIN_MODE_INPUT(15))
680 #define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
681  PIN_OTYPE_PUSHPULL(1) | \
682  PIN_OTYPE_PUSHPULL(2) | \
683  PIN_OTYPE_PUSHPULL(3) | \
684  PIN_OTYPE_PUSHPULL(4) | \
685  PIN_OTYPE_PUSHPULL(5) | \
686  PIN_OTYPE_PUSHPULL(6) | \
687  PIN_OTYPE_PUSHPULL(7) | \
688  PIN_OTYPE_PUSHPULL(8) | \
689  PIN_OTYPE_PUSHPULL(9) | \
690  PIN_OTYPE_PUSHPULL(10) | \
691  PIN_OTYPE_PUSHPULL(11) | \
692  PIN_OTYPE_PUSHPULL(12) | \
693  PIN_OTYPE_PUSHPULL(13) | \
694  PIN_OTYPE_PUSHPULL(14) | \
695  PIN_OTYPE_PUSHPULL(15))
696 #define VAL_GPIOF_OSPEEDR (PIN_OSPEED_100M(0) | \
697  PIN_OSPEED_100M(1) | \
698  PIN_OSPEED_100M(2) | \
699  PIN_OSPEED_100M(3) | \
700  PIN_OSPEED_100M(4) | \
701  PIN_OSPEED_100M(5) | \
702  PIN_OSPEED_100M(6) | \
703  PIN_OSPEED_100M(7) | \
704  PIN_OSPEED_100M(8) | \
705  PIN_OSPEED_100M(9) | \
706  PIN_OSPEED_100M(10) | \
707  PIN_OSPEED_100M(11) | \
708  PIN_OSPEED_100M(12) | \
709  PIN_OSPEED_100M(13) | \
710  PIN_OSPEED_100M(14) | \
711  PIN_OSPEED_100M(15))
712 #define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(0) | \
713  PIN_PUPDR_FLOATING(1) | \
714  PIN_PUPDR_FLOATING(2) | \
715  PIN_PUPDR_FLOATING(3) | \
716  PIN_PUPDR_FLOATING(4) | \
717  PIN_PUPDR_FLOATING(5) | \
718  PIN_PUPDR_FLOATING(6) | \
719  PIN_PUPDR_FLOATING(7) | \
720  PIN_PUPDR_FLOATING(8) | \
721  PIN_PUPDR_FLOATING(9) | \
722  PIN_PUPDR_FLOATING(10) | \
723  PIN_PUPDR_FLOATING(11) | \
724  PIN_PUPDR_FLOATING(12) | \
725  PIN_PUPDR_FLOATING(13) | \
726  PIN_PUPDR_FLOATING(14) | \
727  PIN_PUPDR_FLOATING(15))
728 #define VAL_GPIOF_ODR (PIN_ODR_HIGH(0) | \
729  PIN_ODR_HIGH(1) | \
730  PIN_ODR_HIGH(2) | \
731  PIN_ODR_HIGH(3) | \
732  PIN_ODR_HIGH(4) | \
733  PIN_ODR_HIGH(5) | \
734  PIN_ODR_HIGH(6) | \
735  PIN_ODR_HIGH(7) | \
736  PIN_ODR_HIGH(8) | \
737  PIN_ODR_HIGH(9) | \
738  PIN_ODR_HIGH(10) | \
739  PIN_ODR_HIGH(11) | \
740  PIN_ODR_HIGH(12) | \
741  PIN_ODR_HIGH(13) | \
742  PIN_ODR_HIGH(14) | \
743  PIN_ODR_HIGH(15))
744 #define VAL_GPIOF_AFRL (PIN_AFIO_AF(0, 0) | \
745  PIN_AFIO_AF(1, 0) | \
746  PIN_AFIO_AF(2, 0) | \
747  PIN_AFIO_AF(3, 0) | \
748  PIN_AFIO_AF(4, 0) | \
749  PIN_AFIO_AF(5, 0) | \
750  PIN_AFIO_AF(6, 0) | \
751  PIN_AFIO_AF(7, 0))
752 #define VAL_GPIOF_AFRH (PIN_AFIO_AF(8, 0) | \
753  PIN_AFIO_AF(9, 0) | \
754  PIN_AFIO_AF(10, 0) | \
755  PIN_AFIO_AF(11, 0) | \
756  PIN_AFIO_AF(12, 0) | \
757  PIN_AFIO_AF(13, 0) | \
758  PIN_AFIO_AF(14, 0) | \
759  PIN_AFIO_AF(15, 0))
760 
761 /*
762  * GPIOG setup:
763  *
764  * PG0 - PG15 (input floating).
765  */
766 #define VAL_GPIOG_MODER (PIN_MODE_INPUT(0) | \
767  PIN_MODE_INPUT(1) | \
768  PIN_MODE_INPUT(2) | \
769  PIN_MODE_INPUT(3) | \
770  PIN_MODE_INPUT(4) | \
771  PIN_MODE_INPUT(5) | \
772  PIN_MODE_INPUT(6) | \
773  PIN_MODE_INPUT(7) | \
774  PIN_MODE_INPUT(8) | \
775  PIN_MODE_INPUT(9) | \
776  PIN_MODE_INPUT(10) | \
777  PIN_MODE_INPUT(11) | \
778  PIN_MODE_INPUT(12) | \
779  PIN_MODE_INPUT(13) | \
780  PIN_MODE_INPUT(14) | \
781  PIN_MODE_INPUT(15))
782 #define VAL_GPIOG_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
783  PIN_OTYPE_PUSHPULL(1) | \
784  PIN_OTYPE_PUSHPULL(2) | \
785  PIN_OTYPE_PUSHPULL(3) | \
786  PIN_OTYPE_PUSHPULL(4) | \
787  PIN_OTYPE_PUSHPULL(5) | \
788  PIN_OTYPE_PUSHPULL(6) | \
789  PIN_OTYPE_PUSHPULL(7) | \
790  PIN_OTYPE_PUSHPULL(8) | \
791  PIN_OTYPE_PUSHPULL(9) | \
792  PIN_OTYPE_PUSHPULL(10) | \
793  PIN_OTYPE_PUSHPULL(11) | \
794  PIN_OTYPE_PUSHPULL(12) | \
795  PIN_OTYPE_PUSHPULL(13) | \
796  PIN_OTYPE_PUSHPULL(14) | \
797  PIN_OTYPE_PUSHPULL(15))
798 #define VAL_GPIOG_OSPEEDR (PIN_OSPEED_100M(0) | \
799  PIN_OSPEED_100M(1) | \
800  PIN_OSPEED_100M(2) | \
801  PIN_OSPEED_100M(3) | \
802  PIN_OSPEED_100M(4) | \
803  PIN_OSPEED_100M(5) | \
804  PIN_OSPEED_100M(6) | \
805  PIN_OSPEED_100M(7) | \
806  PIN_OSPEED_100M(8) | \
807  PIN_OSPEED_100M(9) | \
808  PIN_OSPEED_100M(10) | \
809  PIN_OSPEED_100M(11) | \
810  PIN_OSPEED_100M(12) | \
811  PIN_OSPEED_100M(13) | \
812  PIN_OSPEED_100M(14) | \
813  PIN_OSPEED_100M(15))
814 #define VAL_GPIOG_PUPDR (PIN_PUPDR_FLOATING(0) | \
815  PIN_PUPDR_FLOATING(1) | \
816  PIN_PUPDR_FLOATING(2) | \
817  PIN_PUPDR_FLOATING(3) | \
818  PIN_PUPDR_FLOATING(4) | \
819  PIN_PUPDR_FLOATING(5) | \
820  PIN_PUPDR_FLOATING(6) | \
821  PIN_PUPDR_FLOATING(7) | \
822  PIN_PUPDR_FLOATING(8) | \
823  PIN_PUPDR_FLOATING(9) | \
824  PIN_PUPDR_FLOATING(10) | \
825  PIN_PUPDR_FLOATING(11) | \
826  PIN_PUPDR_FLOATING(12) | \
827  PIN_PUPDR_FLOATING(13) | \
828  PIN_PUPDR_FLOATING(14) | \
829  PIN_PUPDR_FLOATING(15))
830 #define VAL_GPIOG_ODR (PIN_ODR_HIGH(0) | \
831  PIN_ODR_HIGH(1) | \
832  PIN_ODR_HIGH(2) | \
833  PIN_ODR_HIGH(3) | \
834  PIN_ODR_HIGH(4) | \
835  PIN_ODR_HIGH(5) | \
836  PIN_ODR_HIGH(6) | \
837  PIN_ODR_HIGH(7) | \
838  PIN_ODR_HIGH(8) | \
839  PIN_ODR_HIGH(9) | \
840  PIN_ODR_HIGH(10) | \
841  PIN_ODR_HIGH(11) | \
842  PIN_ODR_HIGH(12) | \
843  PIN_ODR_HIGH(13) | \
844  PIN_ODR_HIGH(14) | \
845  PIN_ODR_HIGH(15))
846 #define VAL_GPIOG_AFRL (PIN_AFIO_AF(0, 0) | \
847  PIN_AFIO_AF(1, 0) | \
848  PIN_AFIO_AF(2, 0) | \
849  PIN_AFIO_AF(3, 0) | \
850  PIN_AFIO_AF(4, 0) | \
851  PIN_AFIO_AF(5, 0) | \
852  PIN_AFIO_AF(6, 0) | \
853  PIN_AFIO_AF(7, 0))
854 #define VAL_GPIOG_AFRH (PIN_AFIO_AF(8, 0) | \
855  PIN_AFIO_AF(9, 0) | \
856  PIN_AFIO_AF(10, 0) | \
857  PIN_AFIO_AF(11, 0) | \
858  PIN_AFIO_AF(12, 0) | \
859  PIN_AFIO_AF(13, 0) | \
860  PIN_AFIO_AF(14, 0) | \
861  PIN_AFIO_AF(15, 0))
862 
863 /*
864  * GPIOH setup:
865  *
866  * PH0 - PH15 (input floating).
867  */
868 #define VAL_GPIOH_MODER (PIN_MODE_INPUT(0) | \
869  PIN_MODE_INPUT(1) | \
870  PIN_MODE_INPUT(2) | \
871  PIN_MODE_INPUT(3) | \
872  PIN_MODE_INPUT(4) | \
873  PIN_MODE_INPUT(5) | \
874  PIN_MODE_INPUT(6) | \
875  PIN_MODE_INPUT(7) | \
876  PIN_MODE_INPUT(8) | \
877  PIN_MODE_INPUT(9) | \
878  PIN_MODE_INPUT(10) | \
879  PIN_MODE_INPUT(11) | \
880  PIN_MODE_INPUT(12) | \
881  PIN_MODE_INPUT(13) | \
882  PIN_MODE_INPUT(14) | \
883  PIN_MODE_INPUT(15))
884 #define VAL_GPIOH_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
885  PIN_OTYPE_PUSHPULL(1) | \
886  PIN_OTYPE_PUSHPULL(2) | \
887  PIN_OTYPE_PUSHPULL(3) | \
888  PIN_OTYPE_PUSHPULL(4) | \
889  PIN_OTYPE_PUSHPULL(5) | \
890  PIN_OTYPE_PUSHPULL(6) | \
891  PIN_OTYPE_PUSHPULL(7) | \
892  PIN_OTYPE_PUSHPULL(8) | \
893  PIN_OTYPE_PUSHPULL(9) | \
894  PIN_OTYPE_PUSHPULL(10) | \
895  PIN_OTYPE_PUSHPULL(11) | \
896  PIN_OTYPE_PUSHPULL(12) | \
897  PIN_OTYPE_PUSHPULL(13) | \
898  PIN_OTYPE_PUSHPULL(14) | \
899  PIN_OTYPE_PUSHPULL(15))
900 #define VAL_GPIOH_OSPEEDR (PIN_OSPEED_100M(0) | \
901  PIN_OSPEED_100M(1) | \
902  PIN_OSPEED_100M(2) | \
903  PIN_OSPEED_100M(3) | \
904  PIN_OSPEED_100M(4) | \
905  PIN_OSPEED_100M(5) | \
906  PIN_OSPEED_100M(6) | \
907  PIN_OSPEED_100M(7) | \
908  PIN_OSPEED_100M(8) | \
909  PIN_OSPEED_100M(9) | \
910  PIN_OSPEED_100M(10) | \
911  PIN_OSPEED_100M(11) | \
912  PIN_OSPEED_100M(12) | \
913  PIN_OSPEED_100M(13) | \
914  PIN_OSPEED_100M(14) | \
915  PIN_OSPEED_100M(15))
916 #define VAL_GPIOH_PUPDR (PIN_PUPDR_FLOATING(0) | \
917  PIN_PUPDR_FLOATING(1) | \
918  PIN_PUPDR_FLOATING(2) | \
919  PIN_PUPDR_FLOATING(3) | \
920  PIN_PUPDR_FLOATING(4) | \
921  PIN_PUPDR_FLOATING(5) | \
922  PIN_PUPDR_FLOATING(6) | \
923  PIN_PUPDR_FLOATING(7) | \
924  PIN_PUPDR_FLOATING(8) | \
925  PIN_PUPDR_FLOATING(9) | \
926  PIN_PUPDR_FLOATING(10) | \
927  PIN_PUPDR_FLOATING(11) | \
928  PIN_PUPDR_FLOATING(12) | \
929  PIN_PUPDR_FLOATING(13) | \
930  PIN_PUPDR_FLOATING(14) | \
931  PIN_PUPDR_FLOATING(15))
932 #define VAL_GPIOH_ODR (PIN_ODR_HIGH(0) | \
933  PIN_ODR_HIGH(1) | \
934  PIN_ODR_HIGH(2) | \
935  PIN_ODR_HIGH(3) | \
936  PIN_ODR_HIGH(4) | \
937  PIN_ODR_HIGH(5) | \
938  PIN_ODR_HIGH(6) | \
939  PIN_ODR_HIGH(7) | \
940  PIN_ODR_HIGH(8) | \
941  PIN_ODR_HIGH(9) | \
942  PIN_ODR_HIGH(10) | \
943  PIN_ODR_HIGH(11) | \
944  PIN_ODR_HIGH(12) | \
945  PIN_ODR_HIGH(13) | \
946  PIN_ODR_HIGH(14) | \
947  PIN_ODR_HIGH(15))
948 #define VAL_GPIOH_AFRL (PIN_AFIO_AF(0, 0) | \
949  PIN_AFIO_AF(1, 0) | \
950  PIN_AFIO_AF(2, 0) | \
951  PIN_AFIO_AF(3, 0) | \
952  PIN_AFIO_AF(4, 0) | \
953  PIN_AFIO_AF(5, 0) | \
954  PIN_AFIO_AF(6, 0) | \
955  PIN_AFIO_AF(7, 0))
956 #define VAL_GPIOH_AFRH (PIN_AFIO_AF(8, 0) | \
957  PIN_AFIO_AF(9, 0) | \
958  PIN_AFIO_AF(10, 0) | \
959  PIN_AFIO_AF(11, 0) | \
960  PIN_AFIO_AF(12, 0) | \
961  PIN_AFIO_AF(13, 0) | \
962  PIN_AFIO_AF(14, 0) | \
963  PIN_AFIO_AF(15, 0))
964 
965 /*
966  * GPIOI setup:
967  *
968  * PI0 - PI15 (input floating).
969  */
970 #define VAL_GPIOI_MODER (PIN_MODE_INPUT(0) | \
971  PIN_MODE_INPUT(1) | \
972  PIN_MODE_INPUT(2) | \
973  PIN_MODE_INPUT(3) | \
974  PIN_MODE_INPUT(4) | \
975  PIN_MODE_INPUT(5) | \
976  PIN_MODE_INPUT(6) | \
977  PIN_MODE_INPUT(7) | \
978  PIN_MODE_INPUT(8) | \
979  PIN_MODE_INPUT(9) | \
980  PIN_MODE_INPUT(10) | \
981  PIN_MODE_INPUT(11) | \
982  PIN_MODE_INPUT(12) | \
983  PIN_MODE_INPUT(13) | \
984  PIN_MODE_INPUT(14) | \
985  PIN_MODE_INPUT(15))
986 #define VAL_GPIOI_OTYPER (PIN_OTYPE_PUSHPULL(0) | \
987  PIN_OTYPE_PUSHPULL(1) | \
988  PIN_OTYPE_PUSHPULL(2) | \
989  PIN_OTYPE_PUSHPULL(3) | \
990  PIN_OTYPE_PUSHPULL(4) | \
991  PIN_OTYPE_PUSHPULL(5) | \
992  PIN_OTYPE_PUSHPULL(6) | \
993  PIN_OTYPE_PUSHPULL(7) | \
994  PIN_OTYPE_PUSHPULL(8) | \
995  PIN_OTYPE_PUSHPULL(9) | \
996  PIN_OTYPE_PUSHPULL(10) | \
997  PIN_OTYPE_PUSHPULL(11) | \
998  PIN_OTYPE_PUSHPULL(12) | \
999  PIN_OTYPE_PUSHPULL(13) | \
1000  PIN_OTYPE_PUSHPULL(14) | \
1001  PIN_OTYPE_PUSHPULL(15))
1002 #define VAL_GPIOI_OSPEEDR (PIN_OSPEED_100M(0) | \
1003  PIN_OSPEED_100M(1) | \
1004  PIN_OSPEED_100M(2) | \
1005  PIN_OSPEED_100M(3) | \
1006  PIN_OSPEED_100M(4) | \
1007  PIN_OSPEED_100M(5) | \
1008  PIN_OSPEED_100M(6) | \
1009  PIN_OSPEED_100M(7) | \
1010  PIN_OSPEED_100M(8) | \
1011  PIN_OSPEED_100M(9) | \
1012  PIN_OSPEED_100M(10) | \
1013  PIN_OSPEED_100M(11) | \
1014  PIN_OSPEED_100M(12) | \
1015  PIN_OSPEED_100M(13) | \
1016  PIN_OSPEED_100M(14) | \
1017  PIN_OSPEED_100M(15))
1018 #define VAL_GPIOI_PUPDR (PIN_PUPDR_FLOATING(0) | \
1019  PIN_PUPDR_FLOATING(1) | \
1020  PIN_PUPDR_FLOATING(2) | \
1021  PIN_PUPDR_FLOATING(3) | \
1022  PIN_PUPDR_FLOATING(4) | \
1023  PIN_PUPDR_FLOATING(5) | \
1024  PIN_PUPDR_FLOATING(6) | \
1025  PIN_PUPDR_FLOATING(7) | \
1026  PIN_PUPDR_FLOATING(8) | \
1027  PIN_PUPDR_FLOATING(9) | \
1028  PIN_PUPDR_FLOATING(10) | \
1029  PIN_PUPDR_FLOATING(11) | \
1030  PIN_PUPDR_FLOATING(12) | \
1031  PIN_PUPDR_FLOATING(13) | \
1032  PIN_PUPDR_FLOATING(14) | \
1033  PIN_PUPDR_FLOATING(15))
1034 #define VAL_GPIOI_ODR (PIN_ODR_HIGH(0) | \
1035  PIN_ODR_HIGH(1) | \
1036  PIN_ODR_HIGH(2) | \
1037  PIN_ODR_HIGH(3) | \
1038  PIN_ODR_HIGH(4) | \
1039  PIN_ODR_HIGH(5) | \
1040  PIN_ODR_HIGH(6) | \
1041  PIN_ODR_HIGH(7) | \
1042  PIN_ODR_HIGH(8) | \
1043  PIN_ODR_HIGH(9) | \
1044  PIN_ODR_HIGH(10) | \
1045  PIN_ODR_HIGH(11) | \
1046  PIN_ODR_HIGH(12) | \
1047  PIN_ODR_HIGH(13) | \
1048  PIN_ODR_HIGH(14) | \
1049  PIN_ODR_HIGH(15))
1050 #define VAL_GPIOI_AFRL (PIN_AFIO_AF(0, 0) | \
1051  PIN_AFIO_AF(1, 0) | \
1052  PIN_AFIO_AF(2, 0) | \
1053  PIN_AFIO_AF(3, 0) | \
1054  PIN_AFIO_AF(4, 0) | \
1055  PIN_AFIO_AF(5, 0) | \
1056  PIN_AFIO_AF(6, 0) | \
1057  PIN_AFIO_AF(7, 0))
1058 #define VAL_GPIOI_AFRH (PIN_AFIO_AF(8, 0) | \
1059  PIN_AFIO_AF(9, 0) | \
1060  PIN_AFIO_AF(10, 0) | \
1061  PIN_AFIO_AF(11, 0) | \
1062  PIN_AFIO_AF(12, 0) | \
1063  PIN_AFIO_AF(13, 0) | \
1064  PIN_AFIO_AF(14, 0) | \
1065  PIN_AFIO_AF(15, 0))
1066 
1067 
1068 /*
1069  * AHB_CLK
1070  */
1071 #define AHB_CLK STM32_HCLK
1072 
1073 
1074 /*
1075  * LEDs
1076  */
1077 // no LEDS here
1078 
1079 /*
1080  * ADCs
1081  */
1082 // AIN1 enabled by default
1083 #ifndef USE_ADC_1
1084 #define USE_ADC_1 1
1085 #endif
1086 #if USE_ADC_1
1087 #define AD1_1_CHANNEL ADC_CHANNEL_IN10
1088 #define ADC_1 AD1_1
1089 #define ADC_1_GPIO_PORT GPIOC
1090 #define ADC_1_GPIO_PIN GPIO0
1091 #endif
1092 
1093 // AIN2 enabled by default
1094 #ifndef USE_ADC_2
1095 #define USE_ADC_2 1
1096 #endif
1097 #if USE_ADC_2
1098 #define AD1_2_CHANNEL ADC_CHANNEL_IN11
1099 #define ADC_2 AD1_2
1100 #define ADC_2_GPIO_PORT GPIOC
1101 #define ADC_2_GPIO_PIN GPIO1
1102 #endif
1103 
1104 // AIN3 enabled by default
1105 #ifndef USE_ADC_3
1106 #define USE_ADC_3 1
1107 #endif
1108 #if USE_ADC_3
1109 #define AD1_3_CHANNEL ADC_CHANNEL_IN12
1110 #define ADC_3 AD1_3
1111 #define ADC_3_GPIO_PORT GPIOC
1112 #define ADC_3_GPIO_PIN GPIO2
1113 #endif
1114 
1115 // AIN4 enabled by default
1116 #ifndef USE_ADC_4
1117 #define USE_ADC_4 1
1118 #endif
1119 #if USE_ADC_4
1120 #define AD1_4_CHANNEL ADC_CHANNEL_IN13
1121 #define ADC_4 AD1_4
1122 #define ADC_4_GPIO_PORT GPIOC
1123 #define ADC_4_GPIO_PIN GPIO3
1124 #endif
1125 
1126 
1127 // Internal Temperature sensor enabled by default
1128 /*
1129 #ifndef USE_ADC_5
1130 #define USE_ADC_5 1
1131 #define USE_ADC_SENSOR 1
1132 #endif
1133 #if USE_ADC_5
1134 #define AD1_5_CHANNEL ADC_CHANNEL_SENSOR
1135 #define ADC_5 AD1_5
1136 #define ADC_5_GPIO_PORT GPIOC // dummy pin
1137 #define ADC_5_GPIO_PIN GPIO3 // dummy pin
1138 #endif
1139 */
1140 
1141 // Add board defines
1142 #define AIN_1 AD1_1_CHANNEL
1143 #define AIN_2 AD1_2_CHANNEL
1144 #define AIN_3 AD1_3_CHANNEL
1145 #define AIN_4 AD1_4_CHANNEL
1146 
1147 /* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
1148 //#ifndef ADC_CHANNEL_VSUPPLY
1149 //#define ADC_CHANNEL_VSUPPLY ADC_1
1150 //#endif
1151 
1152 //#define ADC_CHANNEL_CURRENT ADC_2
1153 
1154 #define DefaultVoltageOfAdc(adc) (0.000805664*adc)//(0.004489*adc)
1155 #define DefaultMilliAmpereOfAdc(adc) (0.004489*adc)
1156 
1157 /*
1158  * PWM defines
1159  * no PWM outputs used
1160  */
1161 #ifndef USE_PWM0
1162 #define USE_PWM0 1
1163 #endif
1164 #if USE_PWM0
1165 #define PWM_SERVO_0 0
1166 #define PWM_SERVO_0_GPIO GPIOB
1167 #define PWM_SERVO_0_PIN GPIO0
1168 #define PWM_SERVO_0_AF GPIO_AF2
1169 #define PWM_SERVO_0_DRIVER PWMD3
1170 #define PWM_SERVO_0_CHANNEL 2
1171 #define PWM_SERVO_0_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
1172 #else
1173 #define PWM_SERVO_0_ACTIVE PWM_OUTPUT_DISABLED
1174 #endif
1175 
1176 #ifndef USE_PWM1
1177 #define USE_PWM1 1
1178 #endif
1179 #if USE_PWM1
1180 #define PWM_SERVO_1 1
1181 #define PWM_SERVO_1_GPIO GPIOA
1182 #define PWM_SERVO_1_PIN GPIO2
1183 #define PWM_SERVO_1_AF GPIO_AF1
1184 #define PWM_SERVO_1_DRIVER PWMD3
1185 #define PWM_SERVO_1_CHANNEL 2
1186 #define PWM_SERVO_1_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
1187 #else
1188 #define PWM_SERVO_1_ACTIVE PWM_OUTPUT_DISABLED
1189 #endif
1190 
1191 #ifndef USE_PWM2
1192 #define USE_PWM2 1
1193 #endif
1194 #if USE_PWM2
1195 #define PWM_SERVO_2 2
1196 #define PWM_SERVO_2_GPIO GPIOB
1197 #define PWM_SERVO_2_PIN GPIO5
1198 #define PWM_SERVO_2_AF GPIO_AF3
1199 #define PWM_SERVO_2_DRIVER PWMD3
1200 #define PWM_SERVO_2_CHANNEL 1
1201 #define PWM_SERVO_2_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
1202 #else
1203 #define PWM_SERVO_2_ACTIVE PWM_OUTPUT_DISABLED
1204 #endif
1205 
1206 #ifndef USE_PWM3
1207 #define USE_PWM3 1
1208 #endif
1209 #if USE_PWM3
1210 #define PWM_SERVO_3 3
1211 #define PWM_SERVO_3_GPIO GPIOB
1212 #define PWM_SERVO_3_PIN GPIO4
1213 #define PWM_SERVO_3_AF GPIO_AF2
1214 #define PWM_SERVO_3_DRIVER PWMD3
1215 #define PWM_SERVO_3_CHANNEL 0
1216 #define PWM_SERVO_3_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
1217 #else
1218 #define PWM_SERVO_3_ACTIVE PWM_OUTPUT_DISABLED
1219 #endif
1220 
1221 
1226 #define RC_PPM_TICKS_PER_USEC 6
1227 #define PPM_TIMER_FREQUENCY 6000000
1228 #define PPM_CHANNEL ICU_CHANNEL_3
1229 #define PPM_TIMER ICUD1
1230 
1235 #define I2C1_CLOCK_SPEED 400000
1236 #define I2C1_CFG_DEF { \
1237  OPMODE_I2C, \
1238  I2C1_CLOCK_SPEED, \
1239  FAST_DUTY_CYCLE_2, \
1240  }
1241 
1242 #define I2C2_CLOCK_SPEED 400000
1243 #define I2C2_CFG_DEF { \
1244  OPMODE_I2C, \
1245  I2C2_CLOCK_SPEED, \
1246  FAST_DUTY_CYCLE_2, \
1247  }
1248 
1252 // SLAVE0 - unconnected
1253 #define SPI_SELECT_SLAVE0_PORT GPIOB
1254 #define SPI_SELECT_SLAVE0_PIN 9
1255 // SLAVE1 - unconnected
1256 #define SPI_SELECT_SLAVE1_PORT GPIOB
1257 #define SPI_SELECT_SLAVE1_PIN 1
1258 // SLAVE2 is ASPIRIN MPU600 CS
1259 #define SPI_SELECT_SLAVE2_PORT GPIOB
1260 #define SPI_SELECT_SLAVE2_PIN 12
1261 // SLAVE3 is BARO_CS
1262 #define SPI_SELECT_SLAVE3_PORT GPIOE
1263 #define SPI_SELECT_SLAVE3_PIN 3
1264 // SLAVE4 - unconnected
1265 #define SPI_SELECT_SLAVE4_PORT GPIOB
1266 #define SPI_SELECT_SLAVE4_PIN 2
1267 
1279 #ifndef USE_BARO_BOARD
1280 #define USE_BARO_BOARD 0
1281 #endif
1282 
1283 /*
1284  * Actuators for fixedwing
1285  */
1286  /* Default actuators driver */
1287 #define DEFAULT_ACTUATORS "subsystems/actuators/actuators_pwm.h"
1288 #define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
1289 #define ActuatorsDefaultInit() ActuatorsPwmInit()
1290 #define ActuatorsDefaultCommit() ActuatorsPwmCommit()
1291 
1292 #if !defined(_FROM_ASM_)
1293 #ifdef __cplusplus
1294 extern "C" {
1295 #endif
1296  void boardInit(void);
1297 #ifdef __cplusplus
1298 }
1299 #endif
1300 #endif /* _FROM_ASM_ */
1301 
1302 #endif /* _BOARD_H_ */
void boardInit(void)
Board-specific initialization code.
Definition: board.c:122