Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
board.h
Go to the documentation of this file.
1/*
2 ChibiOS - Copyright (C) 2006..2015 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#pragma once
18
19/*
20 ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
21
22 Licensed under the Apache License, Version 2.0 (the "License");
23 you may not use this file except in compliance with the License.
24 You may obtain a copy of the License at
25 http://www.apache.org/licenses/LICENSE-2.0
26 Unless required by applicable law or agreed to in writing, software
27 distributed under the License is distributed on an "AS IS" BASIS,
28 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29 See the License for the specific language governing permissions and
30 limitations under the License.
31*/
32
33/*
34 * Board identifier.
35 */
36#define BOARD_ST_APOGEE
37#define BOARD_NAME "AB/GRZ STM32F4 Apogee 1.0"
38
39/*
40 * Board oscillators-related settings.
41 * NOTE: LSE fitted.
42 */
43#if !defined(STM32_LSECLK)
44#define STM32_LSECLK 32768
45#endif
46
47#if !defined(STM32_HSECLK)
48#define STM32_HSECLK 16000000
49#endif
50
51
52/*
53 * Board voltages.
54 * Required for performance limits calculation.
55 */
56#define STM32_VDD 300
57
58/*
59 * MCU type as defined in the ST header file stm32f4xx.h.
60 */
61#define STM32F407xx
62
63/*
64 * PAPARAZZI CONFIGURATION
65 */
66
67
68/*
69 * Concat macro
70 */
71#define _CONCAT_BOARD_PARAM(_s1, _s2) _s1 ## _s2
72#define CONCAT_BOARD_PARAM(_s1, _s2) _CONCAT_BOARD_PARAM(_s1, _s2)
73
74
75/*
76 * LEDs
77 */
78/* red, on PC0 */
79#ifndef USE_LED_1
80#define USE_LED_1 1
81#endif
82#define LED_1_GPIO GPIOC
83#define LED_1_GPIO_PIN GPIO0
84#define LED_1_GPIO_ON gpio_clear
85#define LED_1_GPIO_OFF gpio_set
86
87/* orange, on PC13 */
88#ifndef USE_LED_2
89#define USE_LED_2 1
90#endif
91#define LED_2_GPIO GPIOC
92#define LED_2_GPIO_PIN GPIO13
93#define LED_2_GPIO_ON gpio_clear
94#define LED_2_GPIO_OFF gpio_set
95
96/* green, on PC1 */
97#ifndef USE_LED_3
98#define USE_LED_3 1
99#endif
100#define LED_3_GPIO GPIOC
101#define LED_3_GPIO_PIN GPIO1
102#define LED_3_GPIO_ON gpio_clear
103#define LED_3_GPIO_OFF gpio_set
104
105/* yellow, on PC3 */
106#ifndef USE_LED_4
107#define USE_LED_4 1
108#endif
109#define LED_4_GPIO GPIOC
110#define LED_4_GPIO_PIN GPIO3
111#define LED_4_GPIO_ON gpio_clear
112#define LED_4_GPIO_OFF gpio_set
113
114/* AUX1, on PB1, 1 on LED_ON, 0 on LED_OFF */
115#ifndef USE_LED_5
116#define USE_LED_5 0
117#endif
118#define LED_5_GPIO GPIOB
119#define LED_5_GPIO_PIN GPIO1
120#define LED_5_GPIO_ON gpio_set
121#define LED_5_GPIO_OFF gpio_clear
122
123/* AUX2, on PC5, 1 on LED_ON, 0 on LED_OFF */
124#ifndef USE_LED_6
125#define USE_LED_6 0
126#endif
127#define LED_6_GPIO GPIOC
128#define LED_6_GPIO_PIN GPIO5
129#define LED_6_GPIO_ON gpio_set
130#define LED_6_GPIO_OFF gpio_clear
131
132/* AUX3, on PC4, 1 on LED_ON, 0 on LED_OFF */
133#ifndef USE_LED_7
134#define USE_LED_7 0
135#endif
136#define LED_7_GPIO GPIOC
137#define LED_7_GPIO_PIN GPIO4
138#define LED_7_GPIO_ON gpio_set
139#define LED_7_GPIO_OFF gpio_clear
140
141/* AUX4, on PB15, 1 on LED_ON, 0 on LED_OFF */
142#ifndef USE_LED_8
143#define USE_LED_8 0
144#endif
145#define LED_8_GPIO GPIOB
146#define LED_8_GPIO_PIN GPIO15
147#define LED_8_GPIO_ON gpio_set
148#define LED_8_GPIO_OFF gpio_clear
149
150/* Power Switch, on PB12 */
151#define POWER_SWITCH_GPIO GPIOB,GPIO12
152
153/* Pint to set Uart2 RX polarity, on PB13, output high inverts, low doesn't */
154#define RC_POLARITY_GPIO_PORT GPIOB
155#define RC_POLARITY_GPIO_PIN GPIO13
156
157/*
158 * ADCs
159 */
160// AUX 1
161#if USE_ADC_1
162#define AD1_1_CHANNEL ADC_CHANNEL_IN9
163#define ADC_1 AD1_1
164#define ADC_1_GPIO_PORT GPIOB
165#define ADC_1_GPIO_PIN GPIO1
166#endif
167
168// AUX 2
169#if USE_ADC_2
170#define AD1_2_CHANNEL ADC_CHANNEL_IN15
171#define ADC_2 AD1_2
172#define ADC_2_GPIO_PORT GPIOC
173#define ADC_2_GPIO_PIN GPIO5
174#endif
175
176// AUX 3
177#if USE_ADC_3
178#define AD1_3_CHANNEL ADC_CHANNEL_IN14
179#define ADC_3 AD1_3
180#define ADC_3_GPIO_PORT GPIOC
181#define ADC_3_GPIO_PIN GPIO4
182#endif
183
184// Internal ADC for battery enabled by default
185#ifndef USE_ADC_4
186#define USE_ADC_4 1
187#endif
188#if USE_ADC_4
189#define AD1_4_CHANNEL ADC_CHANNEL_IN4
190#define ADC_4 AD1_4
191#define ADC_4_GPIO_PORT GPIOA
192#define ADC_4_GPIO_PIN GPIO4
193#endif
194
195/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
196#ifndef ADC_CHANNEL_VSUPPLY
197#define ADC_CHANNEL_VSUPPLY ADC_4
198#endif
199
200#define DefaultVoltageOfAdc(adc) (0.006185*adc)
201
202/*
203 * PWM TIM defines
204 * enable TIM2 and TIM3 by default
205 */
206#ifndef USE_PWM_TIM2
207#define USE_PWM_TIM2 1
208#endif
209
210#ifndef USE_PWM_TIM3
211#define USE_PWM_TIM3 1
212#endif
213
214/*
215 * PWM defines
216 */
217#ifndef USE_PWM0
218#define USE_PWM0 1
219#endif
220#if USE_PWM0
221#define PWM_SERVO_0 0
222#define PWM_SERVO_0_GPIO PAL_PORT(LINE_SERVO0)
223#define PWM_SERVO_0_PIN PAL_PAD(LINE_SERVO0)
224#define PWM_SERVO_0_AF AF_LINE_SERVO0
225#define PWM_SERVO_0_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO0_TIM)
226#define PWM_SERVO_0_CHANNEL (SERVO0_TIM_CH-1)
227#define PWM_SERVO_0_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO0_TIM)
228#endif
229
230#ifndef USE_PWM1
231#define USE_PWM1 1
232#endif
233#if USE_PWM1
234#define PWM_SERVO_1 1
235#define PWM_SERVO_1_GPIO PAL_PORT(LINE_SERVO1)
236#define PWM_SERVO_1_PIN PAL_PAD(LINE_SERVO1)
237#define PWM_SERVO_1_AF AF_LINE_SERVO1
238#define PWM_SERVO_1_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO1_TIM)
239#define PWM_SERVO_1_CHANNEL (SERVO1_TIM_CH-1)
240#define PWM_SERVO_1_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO1_TIM)
241#endif
242
243#ifndef USE_PWM2
244#define USE_PWM2 1
245#endif
246#if USE_PWM2
247#define PWM_SERVO_2 2
248#define PWM_SERVO_2_GPIO PAL_PORT(LINE_SERVO2)
249#define PWM_SERVO_2_PIN PAL_PAD(LINE_SERVO2)
250#define PWM_SERVO_2_AF AF_LINE_SERVO2
251#define PWM_SERVO_2_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO2_TIM)
252#define PWM_SERVO_2_CHANNEL (SERVO2_TIM_CH-1)
253#define PWM_SERVO_2_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO2_TIM)
254#endif
255
256#ifndef USE_PWM3
257#define USE_PWM3 1
258#endif
259#if USE_PWM3
260#define PWM_SERVO_3 3
261#define PWM_SERVO_3_GPIO PAL_PORT(LINE_SERVO3)
262#define PWM_SERVO_3_PIN PAL_PAD(LINE_SERVO3)
263#define PWM_SERVO_3_AF AF_LINE_SERVO3
264#define PWM_SERVO_3_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO3_TIM)
265#define PWM_SERVO_3_CHANNEL (SERVO3_TIM_CH-1)
266#define PWM_SERVO_3_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO3_TIM)
267#endif
268
269#ifndef USE_PWM4
270#define USE_PWM4 1
271#endif
272#if USE_PWM4
273#define PWM_SERVO_4 4
274#define PWM_SERVO_4_GPIO PAL_PORT(LINE_SERVO4)
275#define PWM_SERVO_4_PIN PAL_PAD(LINE_SERVO4)
276#define PWM_SERVO_4_AF AF_LINE_SERVO4
277#define PWM_SERVO_4_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO4_TIM)
278#define PWM_SERVO_4_CHANNEL (SERVO4_TIM_CH-1)
279#define PWM_SERVO_4_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO4_TIM)
280#endif
281
282#ifndef USE_PWM5
283#define USE_PWM5 1
284#endif
285#if USE_PWM5
286#define PWM_SERVO_5 5
287#define PWM_SERVO_5_GPIO PAL_PORT(LINE_SERVO5)
288#define PWM_SERVO_5_PIN PAL_PAD(LINE_SERVO5)
289#define PWM_SERVO_5_AF AF_LINE_SERVO5
290#define PWM_SERVO_5_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO5_TIM)
291#define PWM_SERVO_5_CHANNEL (SERVO5_TIM_CH-1)
292#define PWM_SERVO_5_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO5_TIM)
293#endif
294
295#if USE_PWM6
296#define PWM_SERVO_6 6
297#define PWM_SERVO_6_GPIO PAL_PORT(LINE_SERVO6)
298#define PWM_SERVO_6_PIN PAL_PAD(LINE_SERVO6)
299#define PWM_SERVO_6_AF AF_LINE_SERVO6
300#define PWM_SERVO_6_DRIVER CONCAT_BOARD_PARAM(PWMD, SERVO6_TIM)
301#define PWM_SERVO_6_CHANNEL (SERVO6_TIM_CH-1)
302#define PWM_SERVO_6_CONF CONCAT_BOARD_PARAM(pwmcfg, SERVO6_TIM)
303#endif
304
308#ifndef DSHOT_TELEMETRY_DEV
309#define DSHOT_TELEMETRY_DEV NULL
310#endif
311#ifndef USE_DSHOT_TIM2
312#define USE_DSHOT_TIM2 1
313#endif
314#ifndef USE_DSHOT_TIM3
315#define USE_DSHOT_TIM3 1
316#endif
317#if USE_DSHOT_TIM2 // Servo 1, 4, 5
318#define DSHOT_SERVO_1 1
319#define DSHOT_SERVO_1_GPIO GPIOA
320#define DSHOT_SERVO_1_PIN GPIO2
321#define DSHOT_SERVO_1_AF GPIO_AF1
322#define DSHOT_SERVO_1_DRIVER DSHOTD2
323#define DSHOT_SERVO_1_CHANNEL 2
324#define DSHOT_SERVO_4 4
325#define DSHOT_SERVO_4_GPIO GPIOB
326#define DSHOT_SERVO_4_PIN GPIO3
327#define DSHOT_SERVO_4_AF GPIO_AF1
328#define DSHOT_SERVO_4_DRIVER DSHOTD2
329#define DSHOT_SERVO_4_CHANNEL 1
330#define DSHOT_SERVO_5 5
331#define DSHOT_SERVO_5_GPIO GPIOA
332#define DSHOT_SERVO_5_PIN GPIO15
333#define DSHOT_SERVO_5_AF GPIO_AF1
334#define DSHOT_SERVO_5_DRIVER DSHOTD2
335#define DSHOT_SERVO_5_CHANNEL 0
336#define DSHOT_CONF_TIM2 1
337#define DSHOT_CONF2_DEF { \
338 .dma_stream = STM32_PWM2_UP_DMA_STREAM, \
339 .dma_channel = STM32_PWM2_UP_DMA_CHANNEL, \
340 .pwmp = &PWMD2, \
341 .tlm_sd = DSHOT_TELEMETRY_DEV, \
342 .dma_buf = &dshot2DmaBuffer, \
343}
344#endif
345#if USE_DSHOT_TIM3 // Servo 0,2,3,6
346#define DSHOT_SERVO_0 0
347#define DSHOT_SERVO_0_GPIO GPIOB
348#define DSHOT_SERVO_0_PIN GPIO0
349#define DSHOT_SERVO_0_AF GPIO_AF2
350#define DSHOT_SERVO_0_DRIVER DSHOTD3
351#define DSHOT_SERVO_0_CHANNEL 2
352#define DSHOT_SERVO_2 2
353#define DSHOT_SERVO_2_GPIO GPIOB
354#define DSHOT_SERVO_2_PIN GPIO5
355#define DSHOT_SERVO_2_AF GPIO_AF2
356#define DSHOT_SERVO_2_DRIVER DSHOTD3
357#define DSHOT_SERVO_2_CHANNEL 1
358#define DSHOT_SERVO_3 3
359#define DSHOT_SERVO_3_GPIO GPIOB
360#define DSHOT_SERVO_3_PIN GPIO4
361#define DSHOT_SERVO_3_AF GPIO_AF2
362#define DSHOT_SERVO_3_DRIVER DSHOTD3
363#define DSHOT_SERVO_3_CHANNEL 0
364#if USE_DSHOT6
365// DSHOT6 on AUX1 pin, not activated by default
366#define DSHOT_SERVO_6 6
367#define DSHOT_SERVO_6_GPIO GPIOB
368#define DSHOT_SERVO_6_PIN GPIO1
369#define DSHOT_SERVO_6_AF GPIO_AF2
370#define DSHOT_SERVO_6_DRIVER DSHOTD3
371#define DSHOT_SERVO_6_CHANNEL 3
372#endif
373#define DSHOT_CONF_TIM3 1
374#define DSHOT_CONF3_DEF { \
375 .dma_stream = STM32_PWM3_UP_DMA_STREAM, \
376 .dma_channel = STM32_PWM3_UP_DMA_CHANNEL, \
377 .pwmp = &PWMD3, \
378 .tlm_sd = DSHOT_TELEMETRY_DEV, \
379 .dma_buf = &dshot3DmaBuffer, \
380}
381#endif
382
386#define RC_PPM_TICKS_PER_USEC 2
387#define PPM_TIMER_FREQUENCY 2000000
388#define PPM_CHANNEL ICU_CHANNEL_1
389#define PPM_TIMER ICUD1
390
391/*
392 * Spektrum
393 */
394
395// shorter wait with chibios as the RTC oscillator takes longer to stabilize
396#define SPEKTRUM_BIND_WAIT 30000
397
398/* The line that is pulled low at power up to initiate the bind process
399 * PB15: AUX4
400 */
401#define SPEKTRUM_BIND_PIN GPIO15
402#define SPEKTRUM_BIND_PIN_PORT GPIOB
403
404/* The line used to send the pulse train for the bind process
405 * When using UART2 on Apogee, this as to be a different pin than the uart2 rx
406 * Default pin for this is PA8: PPM_IN
407 */
408#ifndef SPEKTRUM_PRIMARY_BIND_CONF_PORT
409#define SPEKTRUM_PRIMARY_BIND_CONF_PORT GPIOA
410#define SPEKTRUM_PRIMARY_BIND_CONF_PIN GPIO8
411#endif
412
413/*
414 * PWM input
415 */
416// PWM_INPUT 1 on PA8 (also PPM IN)
417#define PWM_INPUT1_ICU ICUD1
418#define PWM_INPUT1_CHANNEL ICU_CHANNEL_1
419// PPM in (aka PA8) is used: not compatible with PPM RC receiver
420#define PWM_INPUT1_GPIO_PORT GPIOA
421#define PWM_INPUT1_GPIO_PIN GPIO8
422#define PWM_INPUT1_GPIO_AF GPIO_AF1
423
424// PWM_INPUT 2 on PA2 (also SERVO 1)
425#if (USE_PWM1 && USE_PWM_INPUT2)
426#error "PW1 and PWM_INPUT2 are not compatible"
427#endif
428#define PWM_INPUT2_ICU ICUD5
429#define PWM_INPUT2_CHANNEL ICU_CHANNEL_4
430#define PWM_INPUT2_GPIO_PORT GPIOA
431#define PWM_INPUT2_GPIO_PIN GPIO2
432#define PWM_INPUT2_GPIO_AF GPIO_AF2
433
437#ifndef I2C1_CLOCK_SPEED
438#define I2C1_CLOCK_SPEED 400000
439#endif
440#if I2C1_CLOCK_SPEED == 400000
441#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
442#elif I2C1_CLOCK_SPEED == 100000
443#define I2C1_DUTY_CYCLE STD_DUTY_CYCLE
444#else
445#error Invalid I2C1 clock speed
446#endif
447#define I2C1_CFG_DEF { \
448 OPMODE_I2C, \
449 I2C1_CLOCK_SPEED, \
450 I2C1_DUTY_CYCLE, \
451 }
452
453#ifndef I2C2_CLOCK_SPEED
454#define I2C2_CLOCK_SPEED 400000
455#endif
456#if I2C2_CLOCK_SPEED == 400000
457#define I2C2_DUTY_CYCLE FAST_DUTY_CYCLE_2
458#elif I2C2_CLOCK_SPEED == 100000
459#define I2C2_DUTY_CYCLE STD_DUTY_CYCLE
460#else
461#error Invalid I2C2 clock speed
462#endif
463#define I2C2_CFG_DEF { \
464 OPMODE_I2C, \
465 I2C2_CLOCK_SPEED, \
466 I2C2_DUTY_CYCLE, \
467 }
468
472#define SPI1_GPIO_AF GPIO_AF5
473#define SPI1_GPIO_PORT_MISO GPIOA
474#define SPI1_GPIO_MISO GPIO6
475#define SPI1_GPIO_PORT_MOSI GPIOA
476#define SPI1_GPIO_MOSI GPIO7
477#define SPI1_GPIO_PORT_SCK GPIOA
478#define SPI1_GPIO_SCK GPIO5
479
480// SLAVE0 on SPI connector
481#define SPI_SELECT_SLAVE0_PORT GPIOB
482#define SPI_SELECT_SLAVE0_PIN GPIO9
483// SLAVE1 on AUX1
484#define SPI_SELECT_SLAVE1_PORT GPIOB
485#define SPI_SELECT_SLAVE1_PIN GPIO1
486// SLAVE2 on AUX2
487#define SPI_SELECT_SLAVE2_PORT GPIOC
488#define SPI_SELECT_SLAVE2_PIN GPIO5
489// SLAVE3 on AUX3
490#define SPI_SELECT_SLAVE3_PORT GPIOC
491#define SPI_SELECT_SLAVE3_PIN GPIO4
492// SLAVE4 on AUX4
493#define SPI_SELECT_SLAVE4_PORT GPIOB
494#define SPI_SELECT_SLAVE4_PIN GPIO15
495
502#ifndef USE_BARO_BOARD
503#define USE_BARO_BOARD 1
504#endif
505
506/*
507 * Actuators for fixedwing
508 */
509 /* Default actuators driver */
510#define DEFAULT_ACTUATORS "modules/actuators/actuators_pwm.h"
511#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
512#define ActuatorsDefaultInit() ActuatorsPwmInit()
513#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
514
515
519#define SDIO_D0_PORT GPIOC
520#define SDIO_D0_PIN SDIO_D0
521#define SDIO_D1_PORT GPIOC
522#define SDIO_D1_PIN SDIO_D1
523#define SDIO_D2_PORT GPIOC
524#define SDIO_D2_PIN SDIO_D2
525#define SDIO_D3_PORT GPIOC
526#define SDIO_D3_PIN SDIO_D3
527#define SDIO_CK_PORT GPIOC
528#define SDIO_CK_PIN SDIO_CK
529#define SDIO_CMD_PORT GPIOD
530#define SDIO_CMD_PIN SDIO_CMD
531#define SDIO_AF 12
532// bat monitoring for file closing
533#define SDLOG_BAT_ADC ADCD1
534#define SDLOG_BAT_CHAN AD1_4_CHANNEL
535// usb led status
536#define SDLOG_USB_LED 4
537#define SDLOG_USB_VBUS_PORT GPIOA
538#define SDLOG_USB_VBUS_PIN GPIO9
539
540
544#define WS2812D1_GPIO GPIOA
545#define WS2812D1_PIN GPIO8
546#define WS2812D1_AF 1
547#define WS2812D1_CFG_DEF { \
548 .dma_stream = STM32_PWM1_UP_DMA_STREAM, \
549 .dma_channel = STM32_PWM1_UP_DMA_CHANNEL, \
550 .dma_priority = STM32_PWM1_UP_DMA_PRIORITY, \
551 .pwm_channel = 0, \
552 .pwmp = &PWMD1 \
553}
554
555
556/*
557 * IO pins assignments.
558 */
559#define UART4_TX 0U
560#define UART4_RX 1U
561#define SERVO1 2U
562#define UART2_RX 3U
563#define ADC1_IN4 4U
564#define SPI1_SCK 5U
565#define SPI1_MISO 6U
566#define SPI1_MOSI 7U
567#define CU1_CH1 8U
568#define OTG_FS_VBUS 9U
569#define USART1_RX 10U
570#define OTG_FS_DM 11U
571#define OTG_FS_DP 12U
572#define SWDIO 13U
573#define SWCLK 14U
574#define SERVO5 15U
575
576#define SERVO0 0U
577#define SERVO6 1U
578#define BOOT1 2U
579#define SERVO4 3U
580#define SERVO3 4U
581#define SERVO2 5U
582#define USART1_TX 6U
583#define I2C1_SDA 7U
584#define I2C1_SCL 8U
585#define SPI1_CS 9U
586#define I2C2_SCL 10U
587#define I2C2_SDA 11U
588#define POWER_SWITCH 12U
589#define RX2_POL 13U
590#define SDIO_DETECT 14U
591#define AUX4 15U
592
593#define LED1 0U
594#define LED3 1U
595#define PC02 2U
596#define LED4 3U
597#define AUX3 4U
598#define AUX2 5U
599#define USART6_TX 6U
600#define USART6_RX 7U
601#define SDIO_D0 8U
602#define SDIO_D1 9U
603#define SDIO_D2 10U
604#define SDIO_D3 11U
605#define SDIO_CK 12U
606#define LED2 13U
607#define OSC32_IN 14U
608#define OSC32_OUT 15U
609
610#define PD00 0U
611#define PD01 1U
612#define SDIO_CMD 2U
613#define PD03 3U
614#define PD04 4U
615#define PD05 5U
616#define PD06 6U
617#define PD07 7U
618#define PD08 8U
619#define PD09 9U
620#define PD10 10U
621#define PD11 11U
622#define PD12 12U
623#define PD13 13U
624#define PD14 14U
625#define PD15 15U
626
627#define PE00 0U
628#define PE01 1U
629#define PE02 2U
630#define PE03 3U
631#define PE04 4U
632#define PE05 5U
633#define PE06 6U
634#define PE07 7U
635#define PE08 8U
636#define PE09 9U
637#define PE10 10U
638#define PE11 11U
639#define PE12 12U
640#define PE13 13U
641#define PE14 14U
642#define PE15 15U
643
644#define PF00 0U
645#define PF01 1U
646#define PF02 2U
647#define PF03 3U
648#define PF04 4U
649#define PF05 5U
650#define PF06 6U
651#define PF07 7U
652#define PF08 8U
653#define PF09 9U
654#define PF10 10U
655#define PF11 11U
656#define PF12 12U
657#define PF13 13U
658#define PF14 14U
659#define PF15 15U
660
661#define PG00 0U
662#define PG01 1U
663#define PG02 2U
664#define PG03 3U
665#define PG04 4U
666#define PG05 5U
667#define PG06 6U
668#define PG07 7U
669#define PG08 8U
670#define PG09 9U
671#define PG10 10U
672#define PG11 11U
673#define PG12 12U
674#define PG13 13U
675#define PG14 14U
676#define PG15 15U
677
678#define OSC_IN 0U
679#define OSC_OUT 1U
680#define PH02 2U
681#define PH03 3U
682#define PH04 4U
683#define PH05 5U
684#define PH06 6U
685#define PH07 7U
686#define PH08 8U
687#define PH09 9U
688#define PH10 10U
689#define PH11 11U
690#define PH12 12U
691#define PH13 13U
692#define PH14 14U
693#define PH15 15U
694
695#define PI00 0U
696#define PI01 1U
697#define PI02 2U
698#define PI03 3U
699#define PI04 4U
700#define PI05 5U
701#define PI06 6U
702#define PI07 7U
703#define PI08 8U
704#define PI09 9U
705#define PI10 10U
706#define PI11 11U
707#define PI12 12U
708#define PI13 13U
709#define PI14 14U
710#define PI15 15U
711
712#define PJ00 0U
713#define PJ01 1U
714#define PJ02 2U
715#define PJ03 3U
716#define PJ04 4U
717#define PJ05 5U
718#define PJ06 6U
719#define PJ07 7U
720#define PJ08 8U
721#define PJ09 9U
722#define PJ10 10U
723#define PJ11 11U
724#define PJ12 12U
725#define PJ13 13U
726#define PJ14 14U
727#define PJ15 15U
728
729#define PK00 0U
730#define PK01 1U
731#define PK02 2U
732#define PK03 3U
733#define PK04 4U
734#define PK05 5U
735#define PK06 6U
736#define PK07 7U
737#define PK08 8U
738#define PK09 9U
739#define PK10 10U
740#define PK11 11U
741#define PK12 12U
742#define PK13 13U
743#define PK14 14U
744#define PK15 15U
745
746/*
747 * IO lines assignments.
748 */
749#define LINE_UART4_TX PAL_LINE(GPIOA, 0U)
750#define LINE_UART4_RX PAL_LINE(GPIOA, 1U)
751#define LINE_SERVO1 PAL_LINE(GPIOA, 2U)
752#define LINE_UART2_RX PAL_LINE(GPIOA, 3U)
753#define LINE_ADC1_IN4 PAL_LINE(GPIOA, 4U)
754#define LINE_SPI1_SCK PAL_LINE(GPIOA, 5U)
755#define LINE_SPI1_MISO PAL_LINE(GPIOA, 6U)
756#define LINE_SPI1_MOSI PAL_LINE(GPIOA, 7U)
757#define LINE_CU1_CH1 PAL_LINE(GPIOA, 8U)
758#define LINE_OTG_FS_VBUS PAL_LINE(GPIOA, 9U)
759#define LINE_USART1_RX PAL_LINE(GPIOA, 10U)
760#define LINE_OTG_FS_DM PAL_LINE(GPIOA, 11U)
761#define LINE_OTG_FS_DP PAL_LINE(GPIOA, 12U)
762#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
763#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
764#define LINE_SERVO5 PAL_LINE(GPIOA, 15U)
765
766#define LINE_SERVO0 PAL_LINE(GPIOB, 0U)
767#define LINE_SERVO6 PAL_LINE(GPIOB, 1U)
768#define LINE_BOOT1 PAL_LINE(GPIOB, 2U)
769#define LINE_SERVO4 PAL_LINE(GPIOB, 3U)
770#define LINE_SERVO3 PAL_LINE(GPIOB, 4U)
771#define LINE_SERVO2 PAL_LINE(GPIOB, 5U)
772#define LINE_USART1_TX PAL_LINE(GPIOB, 6U)
773#define LINE_I2C1_SDA PAL_LINE(GPIOB, 7U)
774#define LINE_I2C1_SCL PAL_LINE(GPIOB, 8U)
775#define LINE_SPI1_CS PAL_LINE(GPIOB, 9U)
776#define LINE_I2C2_SCL PAL_LINE(GPIOB, 10U)
777#define LINE_I2C2_SDA PAL_LINE(GPIOB, 11U)
778#define LINE_POWER_SWITCH PAL_LINE(GPIOB, 12U)
779#define LINE_RX2_POL PAL_LINE(GPIOB, 13U)
780#define LINE_SDIO_DETECT PAL_LINE(GPIOB, 14U)
781#define LINE_AUX4 PAL_LINE(GPIOB, 15U)
782
783#define LINE_LED1 PAL_LINE(GPIOC, 0U)
784#define LINE_LED3 PAL_LINE(GPIOC, 1U)
785#define LINE_LED4 PAL_LINE(GPIOC, 3U)
786#define LINE_AUX3 PAL_LINE(GPIOC, 4U)
787#define LINE_AUX2 PAL_LINE(GPIOC, 5U)
788#define LINE_USART6_TX PAL_LINE(GPIOC, 6U)
789#define LINE_USART6_RX PAL_LINE(GPIOC, 7U)
790#define LINE_SDIO_D0 PAL_LINE(GPIOC, 8U)
791#define LINE_SDIO_D1 PAL_LINE(GPIOC, 9U)
792#define LINE_SDIO_D2 PAL_LINE(GPIOC, 10U)
793#define LINE_SDIO_D3 PAL_LINE(GPIOC, 11U)
794#define LINE_SDIO_CK PAL_LINE(GPIOC, 12U)
795#define LINE_LED2 PAL_LINE(GPIOC, 13U)
796#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
797#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
798
799#define LINE_SDIO_CMD PAL_LINE(GPIOD, 2U)
800
801#define LINE_OSC_IN PAL_LINE(GPIOH, 0U)
802#define LINE_OSC_OUT PAL_LINE(GPIOH, 1U)
803
804
805/*
806 * I/O ports initial setup, this configuration is established soon after reset
807 * in the initialization code.
808 * Please refer to the STM32 Reference Manual for details.
809 */
810#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
811#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
812#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
813#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
814#define PIN_ODR_LEVEL_LOW(n) (0U << (n))
815#define PIN_ODR_LEVEL_HIGH(n) (1U << (n))
816#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
817#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
818#define PIN_OSPEED_SPEED_VERYLOW(n) (0U << ((n) * 2U))
819#define PIN_OSPEED_SPEED_LOW(n) (1U << ((n) * 2U))
820#define PIN_OSPEED_SPEED_MEDIUM(n) (2U << ((n) * 2U))
821#define PIN_OSPEED_SPEED_HIGH(n) (3U << ((n) * 2U))
822#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
823#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
824#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
825#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
826
827#define VAL_GPIOA_MODER (PIN_MODE_ALTERNATE(UART4_TX) | \
828 PIN_MODE_ALTERNATE(UART4_RX) | \
829 PIN_MODE_ALTERNATE(SERVO1) | \
830 PIN_MODE_ALTERNATE(UART2_RX) | \
831 PIN_MODE_ANALOG(ADC1_IN4) | \
832 PIN_MODE_ALTERNATE(SPI1_SCK) | \
833 PIN_MODE_ALTERNATE(SPI1_MISO) | \
834 PIN_MODE_ALTERNATE(SPI1_MOSI) | \
835 PIN_MODE_ALTERNATE(CU1_CH1) | \
836 PIN_MODE_INPUT(OTG_FS_VBUS) | \
837 PIN_MODE_ALTERNATE(USART1_RX) | \
838 PIN_MODE_ALTERNATE(OTG_FS_DM) | \
839 PIN_MODE_ALTERNATE(OTG_FS_DP) | \
840 PIN_MODE_ALTERNATE(SWDIO) | \
841 PIN_MODE_ALTERNATE(SWCLK) | \
842 PIN_MODE_ALTERNATE(SERVO5))
843
844#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(UART4_TX) | \
845 PIN_OTYPE_PUSHPULL(UART4_RX) | \
846 PIN_OTYPE_PUSHPULL(SERVO1) | \
847 PIN_OTYPE_PUSHPULL(UART2_RX) | \
848 PIN_OTYPE_PUSHPULL(ADC1_IN4) | \
849 PIN_OTYPE_PUSHPULL(SPI1_SCK) | \
850 PIN_OTYPE_PUSHPULL(SPI1_MISO) | \
851 PIN_OTYPE_PUSHPULL(SPI1_MOSI) | \
852 PIN_OTYPE_PUSHPULL(CU1_CH1) | \
853 PIN_OTYPE_OPENDRAIN(OTG_FS_VBUS) | \
854 PIN_OTYPE_PUSHPULL(USART1_RX) | \
855 PIN_OTYPE_PUSHPULL(OTG_FS_DM) | \
856 PIN_OTYPE_PUSHPULL(OTG_FS_DP) | \
857 PIN_OTYPE_PUSHPULL(SWDIO) | \
858 PIN_OTYPE_PUSHPULL(SWCLK) | \
859 PIN_OTYPE_PUSHPULL(SERVO5))
860
861#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_SPEED_HIGH(UART4_TX) | \
862 PIN_OSPEED_SPEED_HIGH(UART4_RX) | \
863 PIN_OSPEED_SPEED_HIGH(SERVO1) | \
864 PIN_OSPEED_SPEED_HIGH(UART2_RX) | \
865 PIN_OSPEED_SPEED_VERYLOW(ADC1_IN4) | \
866 PIN_OSPEED_SPEED_HIGH(SPI1_SCK) | \
867 PIN_OSPEED_SPEED_HIGH(SPI1_MISO) | \
868 PIN_OSPEED_SPEED_HIGH(SPI1_MOSI) | \
869 PIN_OSPEED_SPEED_HIGH(CU1_CH1) | \
870 PIN_OSPEED_SPEED_VERYLOW(OTG_FS_VBUS) | \
871 PIN_OSPEED_SPEED_HIGH(USART1_RX) | \
872 PIN_OSPEED_SPEED_HIGH(OTG_FS_DM) | \
873 PIN_OSPEED_SPEED_HIGH(OTG_FS_DP) | \
874 PIN_OSPEED_SPEED_HIGH(SWDIO) | \
875 PIN_OSPEED_SPEED_HIGH(SWCLK) | \
876 PIN_OSPEED_SPEED_HIGH(SERVO5))
877
878#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(UART4_TX) | \
879 PIN_PUPDR_FLOATING(UART4_RX) | \
880 PIN_PUPDR_FLOATING(SERVO1) | \
881 PIN_PUPDR_FLOATING(UART2_RX) | \
882 PIN_PUPDR_FLOATING(ADC1_IN4) | \
883 PIN_PUPDR_FLOATING(SPI1_SCK) | \
884 PIN_PUPDR_FLOATING(SPI1_MISO) | \
885 PIN_PUPDR_FLOATING(SPI1_MOSI) | \
886 PIN_PUPDR_FLOATING(CU1_CH1) | \
887 PIN_PUPDR_PULLDOWN(OTG_FS_VBUS) | \
888 PIN_PUPDR_FLOATING(USART1_RX) | \
889 PIN_PUPDR_FLOATING(OTG_FS_DM) | \
890 PIN_PUPDR_FLOATING(OTG_FS_DP) | \
891 PIN_PUPDR_FLOATING(SWDIO) | \
892 PIN_PUPDR_FLOATING(SWCLK) | \
893 PIN_PUPDR_FLOATING(SERVO5))
894
895#define VAL_GPIOA_ODR (PIN_ODR_LEVEL_HIGH(UART4_TX) | \
896 PIN_ODR_LEVEL_HIGH(UART4_RX) | \
897 PIN_ODR_LEVEL_LOW(SERVO1) | \
898 PIN_ODR_LEVEL_HIGH(UART2_RX) | \
899 PIN_ODR_LEVEL_LOW(ADC1_IN4) | \
900 PIN_ODR_LEVEL_HIGH(SPI1_SCK) | \
901 PIN_ODR_LEVEL_HIGH(SPI1_MISO) | \
902 PIN_ODR_LEVEL_HIGH(SPI1_MOSI) | \
903 PIN_ODR_LEVEL_HIGH(CU1_CH1) | \
904 PIN_ODR_LEVEL_LOW(OTG_FS_VBUS) | \
905 PIN_ODR_LEVEL_HIGH(USART1_RX) | \
906 PIN_ODR_LEVEL_HIGH(OTG_FS_DM) | \
907 PIN_ODR_LEVEL_HIGH(OTG_FS_DP) | \
908 PIN_ODR_LEVEL_HIGH(SWDIO) | \
909 PIN_ODR_LEVEL_HIGH(SWCLK) | \
910 PIN_ODR_LEVEL_LOW(SERVO5))
911
912#define VAL_GPIOA_AFRL (PIN_AFIO_AF(UART4_TX, 8) | \
913 PIN_AFIO_AF(UART4_RX, 8) | \
914 PIN_AFIO_AF(SERVO1, 1) | \
915 PIN_AFIO_AF(UART2_RX, 7) | \
916 PIN_AFIO_AF(ADC1_IN4, 0) | \
917 PIN_AFIO_AF(SPI1_SCK, 5) | \
918 PIN_AFIO_AF(SPI1_MISO, 5) | \
919 PIN_AFIO_AF(SPI1_MOSI, 5))
920
921#define VAL_GPIOA_AFRH (PIN_AFIO_AF(CU1_CH1, 1) | \
922 PIN_AFIO_AF(OTG_FS_VBUS, 0) | \
923 PIN_AFIO_AF(USART1_RX, 7) | \
924 PIN_AFIO_AF(OTG_FS_DM, 10) | \
925 PIN_AFIO_AF(OTG_FS_DP, 10) | \
926 PIN_AFIO_AF(SWDIO, 0) | \
927 PIN_AFIO_AF(SWCLK, 0) | \
928 PIN_AFIO_AF(SERVO5, 1))
929
930#define VAL_GPIOB_MODER (PIN_MODE_ALTERNATE(SERVO0) | \
931 PIN_MODE_ALTERNATE(SERVO6) | \
932 PIN_MODE_INPUT(BOOT1) | \
933 PIN_MODE_ALTERNATE(SERVO4) | \
934 PIN_MODE_ALTERNATE(SERVO3) | \
935 PIN_MODE_ALTERNATE(SERVO2) | \
936 PIN_MODE_ALTERNATE(USART1_TX) | \
937 PIN_MODE_ALTERNATE(I2C1_SDA) | \
938 PIN_MODE_ALTERNATE(I2C1_SCL) | \
939 PIN_MODE_OUTPUT(SPI1_CS) | \
940 PIN_MODE_ALTERNATE(I2C2_SCL) | \
941 PIN_MODE_ALTERNATE(I2C2_SDA) | \
942 PIN_MODE_OUTPUT(POWER_SWITCH) | \
943 PIN_MODE_OUTPUT(RX2_POL) | \
944 PIN_MODE_INPUT(SDIO_DETECT) | \
945 PIN_MODE_INPUT(AUX4))
946
947#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(SERVO0) | \
948 PIN_OTYPE_PUSHPULL(SERVO6) | \
949 PIN_OTYPE_OPENDRAIN(BOOT1) | \
950 PIN_OTYPE_PUSHPULL(SERVO4) | \
951 PIN_OTYPE_PUSHPULL(SERVO3) | \
952 PIN_OTYPE_PUSHPULL(SERVO2) | \
953 PIN_OTYPE_PUSHPULL(USART1_TX) | \
954 PIN_OTYPE_OPENDRAIN(I2C1_SDA) | \
955 PIN_OTYPE_OPENDRAIN(I2C1_SCL) | \
956 PIN_OTYPE_PUSHPULL(SPI1_CS) | \
957 PIN_OTYPE_OPENDRAIN(I2C2_SCL) | \
958 PIN_OTYPE_OPENDRAIN(I2C2_SDA) | \
959 PIN_OTYPE_PUSHPULL(POWER_SWITCH) | \
960 PIN_OTYPE_PUSHPULL(RX2_POL) | \
961 PIN_OTYPE_OPENDRAIN(SDIO_DETECT) | \
962 PIN_OTYPE_OPENDRAIN(AUX4))
963
964#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_SPEED_HIGH(SERVO0) | \
965 PIN_OSPEED_SPEED_HIGH(SERVO6) | \
966 PIN_OSPEED_SPEED_VERYLOW(BOOT1) | \
967 PIN_OSPEED_SPEED_HIGH(SERVO4) | \
968 PIN_OSPEED_SPEED_HIGH(SERVO3) | \
969 PIN_OSPEED_SPEED_HIGH(SERVO2) | \
970 PIN_OSPEED_SPEED_HIGH(USART1_TX) | \
971 PIN_OSPEED_SPEED_HIGH(I2C1_SDA) | \
972 PIN_OSPEED_SPEED_HIGH(I2C1_SCL) | \
973 PIN_OSPEED_SPEED_HIGH(SPI1_CS) | \
974 PIN_OSPEED_SPEED_HIGH(I2C2_SCL) | \
975 PIN_OSPEED_SPEED_HIGH(I2C2_SDA) | \
976 PIN_OSPEED_SPEED_HIGH(POWER_SWITCH) | \
977 PIN_OSPEED_SPEED_HIGH(RX2_POL) | \
978 PIN_OSPEED_SPEED_VERYLOW(SDIO_DETECT) | \
979 PIN_OSPEED_SPEED_VERYLOW(AUX4))
980
981#define VAL_GPIOB_PUPDR (PIN_PUPDR_FLOATING(SERVO0) | \
982 PIN_PUPDR_FLOATING(SERVO6) | \
983 PIN_PUPDR_FLOATING(BOOT1) | \
984 PIN_PUPDR_FLOATING(SERVO4) | \
985 PIN_PUPDR_FLOATING(SERVO3) | \
986 PIN_PUPDR_FLOATING(SERVO2) | \
987 PIN_PUPDR_FLOATING(USART1_TX) | \
988 PIN_PUPDR_PULLUP(I2C1_SDA) | \
989 PIN_PUPDR_PULLUP(I2C1_SCL) | \
990 PIN_PUPDR_FLOATING(SPI1_CS) | \
991 PIN_PUPDR_PULLUP(I2C2_SCL) | \
992 PIN_PUPDR_PULLUP(I2C2_SDA) | \
993 PIN_PUPDR_FLOATING(POWER_SWITCH) | \
994 PIN_PUPDR_FLOATING(RX2_POL) | \
995 PIN_PUPDR_PULLUP(SDIO_DETECT) | \
996 PIN_PUPDR_FLOATING(AUX4))
997
998#define VAL_GPIOB_ODR (PIN_ODR_LEVEL_LOW(SERVO0) | \
999 PIN_ODR_LEVEL_LOW(SERVO6) | \
1000 PIN_ODR_LEVEL_LOW(BOOT1) | \
1001 PIN_ODR_LEVEL_LOW(SERVO4) | \
1002 PIN_ODR_LEVEL_LOW(SERVO3) | \
1003 PIN_ODR_LEVEL_LOW(SERVO2) | \
1004 PIN_ODR_LEVEL_HIGH(USART1_TX) | \
1005 PIN_ODR_LEVEL_HIGH(I2C1_SDA) | \
1006 PIN_ODR_LEVEL_HIGH(I2C1_SCL) | \
1007 PIN_ODR_LEVEL_HIGH(SPI1_CS) | \
1008 PIN_ODR_LEVEL_HIGH(I2C2_SCL) | \
1009 PIN_ODR_LEVEL_HIGH(I2C2_SDA) | \
1010 PIN_ODR_LEVEL_HIGH(POWER_SWITCH) | \
1011 PIN_ODR_LEVEL_HIGH(RX2_POL) | \
1012 PIN_ODR_LEVEL_LOW(SDIO_DETECT) | \
1013 PIN_ODR_LEVEL_LOW(AUX4))
1014
1015#define VAL_GPIOB_AFRL (PIN_AFIO_AF(SERVO0, 2) | \
1016 PIN_AFIO_AF(SERVO6, 2) | \
1017 PIN_AFIO_AF(BOOT1, 0) | \
1018 PIN_AFIO_AF(SERVO4, 1) | \
1019 PIN_AFIO_AF(SERVO3, 2) | \
1020 PIN_AFIO_AF(SERVO2, 2) | \
1021 PIN_AFIO_AF(USART1_TX, 7) | \
1022 PIN_AFIO_AF(I2C1_SDA, 4))
1023
1024#define VAL_GPIOB_AFRH (PIN_AFIO_AF(I2C1_SCL, 4) | \
1025 PIN_AFIO_AF(SPI1_CS, 0) | \
1026 PIN_AFIO_AF(I2C2_SCL, 4) | \
1027 PIN_AFIO_AF(I2C2_SDA, 4) | \
1028 PIN_AFIO_AF(POWER_SWITCH, 0) | \
1029 PIN_AFIO_AF(RX2_POL, 0) | \
1030 PIN_AFIO_AF(SDIO_DETECT, 0) | \
1031 PIN_AFIO_AF(AUX4, 0))
1032
1033#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(LED1) | \
1034 PIN_MODE_OUTPUT(LED3) | \
1035 PIN_MODE_INPUT(PC02) | \
1036 PIN_MODE_OUTPUT(LED4) | \
1037 PIN_MODE_INPUT(AUX3) | \
1038 PIN_MODE_INPUT(AUX2) | \
1039 PIN_MODE_ALTERNATE(USART6_TX) | \
1040 PIN_MODE_ALTERNATE(USART6_RX) | \
1041 PIN_MODE_ALTERNATE(SDIO_D0) | \
1042 PIN_MODE_ALTERNATE(SDIO_D1) | \
1043 PIN_MODE_ALTERNATE(SDIO_D2) | \
1044 PIN_MODE_ALTERNATE(SDIO_D3) | \
1045 PIN_MODE_ALTERNATE(SDIO_CK) | \
1046 PIN_MODE_OUTPUT(LED2) | \
1047 PIN_MODE_ALTERNATE(OSC32_IN) | \
1048 PIN_MODE_ALTERNATE(OSC32_OUT))
1049
1050#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(LED1) | \
1051 PIN_OTYPE_PUSHPULL(LED3) | \
1052 PIN_OTYPE_PUSHPULL(PC02) | \
1053 PIN_OTYPE_PUSHPULL(LED4) | \
1054 PIN_OTYPE_OPENDRAIN(AUX3) | \
1055 PIN_OTYPE_OPENDRAIN(AUX2) | \
1056 PIN_OTYPE_PUSHPULL(USART6_TX) | \
1057 PIN_OTYPE_PUSHPULL(USART6_RX) | \
1058 PIN_OTYPE_PUSHPULL(SDIO_D0) | \
1059 PIN_OTYPE_PUSHPULL(SDIO_D1) | \
1060 PIN_OTYPE_PUSHPULL(SDIO_D2) | \
1061 PIN_OTYPE_PUSHPULL(SDIO_D3) | \
1062 PIN_OTYPE_PUSHPULL(SDIO_CK) | \
1063 PIN_OTYPE_PUSHPULL(LED2) | \
1064 PIN_OTYPE_PUSHPULL(OSC32_IN) | \
1065 PIN_OTYPE_PUSHPULL(OSC32_OUT))
1066
1067#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(LED1) | \
1068 PIN_OSPEED_SPEED_VERYLOW(LED3) | \
1069 PIN_OSPEED_SPEED_VERYLOW(PC02) | \
1070 PIN_OSPEED_SPEED_VERYLOW(LED4) | \
1071 PIN_OSPEED_SPEED_VERYLOW(AUX3) | \
1072 PIN_OSPEED_SPEED_VERYLOW(AUX2) | \
1073 PIN_OSPEED_SPEED_HIGH(USART6_TX) | \
1074 PIN_OSPEED_SPEED_HIGH(USART6_RX) | \
1075 PIN_OSPEED_SPEED_HIGH(SDIO_D0) | \
1076 PIN_OSPEED_SPEED_HIGH(SDIO_D1) | \
1077 PIN_OSPEED_SPEED_HIGH(SDIO_D2) | \
1078 PIN_OSPEED_SPEED_HIGH(SDIO_D3) | \
1079 PIN_OSPEED_SPEED_HIGH(SDIO_CK) | \
1080 PIN_OSPEED_SPEED_VERYLOW(LED2) | \
1081 PIN_OSPEED_SPEED_HIGH(OSC32_IN) | \
1082 PIN_OSPEED_SPEED_HIGH(OSC32_OUT))
1083
1084#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(LED1) | \
1085 PIN_PUPDR_FLOATING(LED3) | \
1086 PIN_PUPDR_PULLDOWN(PC02) | \
1087 PIN_PUPDR_FLOATING(LED4) | \
1088 PIN_PUPDR_FLOATING(AUX3) | \
1089 PIN_PUPDR_FLOATING(AUX2) | \
1090 PIN_PUPDR_FLOATING(USART6_TX) | \
1091 PIN_PUPDR_FLOATING(USART6_RX) | \
1092 PIN_PUPDR_PULLUP(SDIO_D0) | \
1093 PIN_PUPDR_PULLUP(SDIO_D1) | \
1094 PIN_PUPDR_PULLUP(SDIO_D2) | \
1095 PIN_PUPDR_PULLUP(SDIO_D3) | \
1096 PIN_PUPDR_FLOATING(SDIO_CK) | \
1097 PIN_PUPDR_FLOATING(LED2) | \
1098 PIN_PUPDR_FLOATING(OSC32_IN) | \
1099 PIN_PUPDR_FLOATING(OSC32_OUT))
1100
1101#define VAL_GPIOC_ODR (PIN_ODR_LEVEL_LOW(LED1) | \
1102 PIN_ODR_LEVEL_LOW(LED3) | \
1103 PIN_ODR_LEVEL_LOW(PC02) | \
1104 PIN_ODR_LEVEL_LOW(LED4) | \
1105 PIN_ODR_LEVEL_LOW(AUX3) | \
1106 PIN_ODR_LEVEL_LOW(AUX2) | \
1107 PIN_ODR_LEVEL_HIGH(USART6_TX) | \
1108 PIN_ODR_LEVEL_HIGH(USART6_RX) | \
1109 PIN_ODR_LEVEL_HIGH(SDIO_D0) | \
1110 PIN_ODR_LEVEL_HIGH(SDIO_D1) | \
1111 PIN_ODR_LEVEL_HIGH(SDIO_D2) | \
1112 PIN_ODR_LEVEL_HIGH(SDIO_D3) | \
1113 PIN_ODR_LEVEL_HIGH(SDIO_CK) | \
1114 PIN_ODR_LEVEL_LOW(LED2) | \
1115 PIN_ODR_LEVEL_HIGH(OSC32_IN) | \
1116 PIN_ODR_LEVEL_HIGH(OSC32_OUT))
1117
1118#define VAL_GPIOC_AFRL (PIN_AFIO_AF(LED1, 0) | \
1119 PIN_AFIO_AF(LED3, 0) | \
1120 PIN_AFIO_AF(PC02, 0) | \
1121 PIN_AFIO_AF(LED4, 0) | \
1122 PIN_AFIO_AF(AUX3, 0) | \
1123 PIN_AFIO_AF(AUX2, 0) | \
1124 PIN_AFIO_AF(USART6_TX, 8) | \
1125 PIN_AFIO_AF(USART6_RX, 8))
1126
1127#define VAL_GPIOC_AFRH (PIN_AFIO_AF(SDIO_D0, 12) | \
1128 PIN_AFIO_AF(SDIO_D1, 12) | \
1129 PIN_AFIO_AF(SDIO_D2, 12) | \
1130 PIN_AFIO_AF(SDIO_D3, 12) | \
1131 PIN_AFIO_AF(SDIO_CK, 12) | \
1132 PIN_AFIO_AF(LED2, 0) | \
1133 PIN_AFIO_AF(OSC32_IN, 0) | \
1134 PIN_AFIO_AF(OSC32_OUT, 0))
1135
1136#define VAL_GPIOD_MODER (PIN_MODE_INPUT(PD00) | \
1137 PIN_MODE_INPUT(PD01) | \
1138 PIN_MODE_ALTERNATE(SDIO_CMD) | \
1139 PIN_MODE_INPUT(PD03) | \
1140 PIN_MODE_INPUT(PD04) | \
1141 PIN_MODE_INPUT(PD05) | \
1142 PIN_MODE_INPUT(PD06) | \
1143 PIN_MODE_INPUT(PD07) | \
1144 PIN_MODE_INPUT(PD08) | \
1145 PIN_MODE_INPUT(PD09) | \
1146 PIN_MODE_INPUT(PD10) | \
1147 PIN_MODE_INPUT(PD11) | \
1148 PIN_MODE_INPUT(PD12) | \
1149 PIN_MODE_INPUT(PD13) | \
1150 PIN_MODE_INPUT(PD14) | \
1151 PIN_MODE_INPUT(PD15))
1152
1153#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(PD00) | \
1154 PIN_OTYPE_PUSHPULL(PD01) | \
1155 PIN_OTYPE_PUSHPULL(SDIO_CMD) | \
1156 PIN_OTYPE_PUSHPULL(PD03) | \
1157 PIN_OTYPE_PUSHPULL(PD04) | \
1158 PIN_OTYPE_PUSHPULL(PD05) | \
1159 PIN_OTYPE_PUSHPULL(PD06) | \
1160 PIN_OTYPE_PUSHPULL(PD07) | \
1161 PIN_OTYPE_PUSHPULL(PD08) | \
1162 PIN_OTYPE_PUSHPULL(PD09) | \
1163 PIN_OTYPE_PUSHPULL(PD10) | \
1164 PIN_OTYPE_PUSHPULL(PD11) | \
1165 PIN_OTYPE_PUSHPULL(PD12) | \
1166 PIN_OTYPE_PUSHPULL(PD13) | \
1167 PIN_OTYPE_PUSHPULL(PD14) | \
1168 PIN_OTYPE_PUSHPULL(PD15))
1169
1170#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PD00) | \
1171 PIN_OSPEED_SPEED_VERYLOW(PD01) | \
1172 PIN_OSPEED_SPEED_HIGH(SDIO_CMD) | \
1173 PIN_OSPEED_SPEED_VERYLOW(PD03) | \
1174 PIN_OSPEED_SPEED_VERYLOW(PD04) | \
1175 PIN_OSPEED_SPEED_VERYLOW(PD05) | \
1176 PIN_OSPEED_SPEED_VERYLOW(PD06) | \
1177 PIN_OSPEED_SPEED_VERYLOW(PD07) | \
1178 PIN_OSPEED_SPEED_VERYLOW(PD08) | \
1179 PIN_OSPEED_SPEED_VERYLOW(PD09) | \
1180 PIN_OSPEED_SPEED_VERYLOW(PD10) | \
1181 PIN_OSPEED_SPEED_VERYLOW(PD11) | \
1182 PIN_OSPEED_SPEED_VERYLOW(PD12) | \
1183 PIN_OSPEED_SPEED_VERYLOW(PD13) | \
1184 PIN_OSPEED_SPEED_VERYLOW(PD14) | \
1185 PIN_OSPEED_SPEED_VERYLOW(PD15))
1186
1187#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLDOWN(PD00) | \
1188 PIN_PUPDR_PULLDOWN(PD01) | \
1189 PIN_PUPDR_PULLUP(SDIO_CMD) | \
1190 PIN_PUPDR_PULLDOWN(PD03) | \
1191 PIN_PUPDR_PULLDOWN(PD04) | \
1192 PIN_PUPDR_PULLDOWN(PD05) | \
1193 PIN_PUPDR_PULLDOWN(PD06) | \
1194 PIN_PUPDR_PULLDOWN(PD07) | \
1195 PIN_PUPDR_PULLDOWN(PD08) | \
1196 PIN_PUPDR_PULLDOWN(PD09) | \
1197 PIN_PUPDR_PULLDOWN(PD10) | \
1198 PIN_PUPDR_PULLDOWN(PD11) | \
1199 PIN_PUPDR_PULLDOWN(PD12) | \
1200 PIN_PUPDR_PULLDOWN(PD13) | \
1201 PIN_PUPDR_PULLDOWN(PD14) | \
1202 PIN_PUPDR_PULLDOWN(PD15))
1203
1204#define VAL_GPIOD_ODR (PIN_ODR_LEVEL_LOW(PD00) | \
1205 PIN_ODR_LEVEL_LOW(PD01) | \
1206 PIN_ODR_LEVEL_HIGH(SDIO_CMD) | \
1207 PIN_ODR_LEVEL_LOW(PD03) | \
1208 PIN_ODR_LEVEL_LOW(PD04) | \
1209 PIN_ODR_LEVEL_LOW(PD05) | \
1210 PIN_ODR_LEVEL_LOW(PD06) | \
1211 PIN_ODR_LEVEL_LOW(PD07) | \
1212 PIN_ODR_LEVEL_LOW(PD08) | \
1213 PIN_ODR_LEVEL_LOW(PD09) | \
1214 PIN_ODR_LEVEL_LOW(PD10) | \
1215 PIN_ODR_LEVEL_LOW(PD11) | \
1216 PIN_ODR_LEVEL_LOW(PD12) | \
1217 PIN_ODR_LEVEL_LOW(PD13) | \
1218 PIN_ODR_LEVEL_LOW(PD14) | \
1219 PIN_ODR_LEVEL_LOW(PD15))
1220
1221#define VAL_GPIOD_AFRL (PIN_AFIO_AF(PD00, 0) | \
1222 PIN_AFIO_AF(PD01, 0) | \
1223 PIN_AFIO_AF(SDIO_CMD, 12) | \
1224 PIN_AFIO_AF(PD03, 0) | \
1225 PIN_AFIO_AF(PD04, 0) | \
1226 PIN_AFIO_AF(PD05, 0) | \
1227 PIN_AFIO_AF(PD06, 0) | \
1228 PIN_AFIO_AF(PD07, 0))
1229
1230#define VAL_GPIOD_AFRH (PIN_AFIO_AF(PD08, 0) | \
1231 PIN_AFIO_AF(PD09, 0) | \
1232 PIN_AFIO_AF(PD10, 0) | \
1233 PIN_AFIO_AF(PD11, 0) | \
1234 PIN_AFIO_AF(PD12, 0) | \
1235 PIN_AFIO_AF(PD13, 0) | \
1236 PIN_AFIO_AF(PD14, 0) | \
1237 PIN_AFIO_AF(PD15, 0))
1238
1239#define VAL_GPIOE_MODER (PIN_MODE_INPUT(PE00) | \
1240 PIN_MODE_INPUT(PE01) | \
1241 PIN_MODE_INPUT(PE02) | \
1242 PIN_MODE_INPUT(PE03) | \
1243 PIN_MODE_INPUT(PE04) | \
1244 PIN_MODE_INPUT(PE05) | \
1245 PIN_MODE_INPUT(PE06) | \
1246 PIN_MODE_INPUT(PE07) | \
1247 PIN_MODE_INPUT(PE08) | \
1248 PIN_MODE_INPUT(PE09) | \
1249 PIN_MODE_INPUT(PE10) | \
1250 PIN_MODE_INPUT(PE11) | \
1251 PIN_MODE_INPUT(PE12) | \
1252 PIN_MODE_INPUT(PE13) | \
1253 PIN_MODE_INPUT(PE14) | \
1254 PIN_MODE_INPUT(PE15))
1255
1256#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(PE00) | \
1257 PIN_OTYPE_PUSHPULL(PE01) | \
1258 PIN_OTYPE_PUSHPULL(PE02) | \
1259 PIN_OTYPE_PUSHPULL(PE03) | \
1260 PIN_OTYPE_PUSHPULL(PE04) | \
1261 PIN_OTYPE_PUSHPULL(PE05) | \
1262 PIN_OTYPE_PUSHPULL(PE06) | \
1263 PIN_OTYPE_PUSHPULL(PE07) | \
1264 PIN_OTYPE_PUSHPULL(PE08) | \
1265 PIN_OTYPE_PUSHPULL(PE09) | \
1266 PIN_OTYPE_PUSHPULL(PE10) | \
1267 PIN_OTYPE_PUSHPULL(PE11) | \
1268 PIN_OTYPE_PUSHPULL(PE12) | \
1269 PIN_OTYPE_PUSHPULL(PE13) | \
1270 PIN_OTYPE_PUSHPULL(PE14) | \
1271 PIN_OTYPE_PUSHPULL(PE15))
1272
1273#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PE00) | \
1274 PIN_OSPEED_SPEED_VERYLOW(PE01) | \
1275 PIN_OSPEED_SPEED_VERYLOW(PE02) | \
1276 PIN_OSPEED_SPEED_VERYLOW(PE03) | \
1277 PIN_OSPEED_SPEED_VERYLOW(PE04) | \
1278 PIN_OSPEED_SPEED_VERYLOW(PE05) | \
1279 PIN_OSPEED_SPEED_VERYLOW(PE06) | \
1280 PIN_OSPEED_SPEED_VERYLOW(PE07) | \
1281 PIN_OSPEED_SPEED_VERYLOW(PE08) | \
1282 PIN_OSPEED_SPEED_VERYLOW(PE09) | \
1283 PIN_OSPEED_SPEED_VERYLOW(PE10) | \
1284 PIN_OSPEED_SPEED_VERYLOW(PE11) | \
1285 PIN_OSPEED_SPEED_VERYLOW(PE12) | \
1286 PIN_OSPEED_SPEED_VERYLOW(PE13) | \
1287 PIN_OSPEED_SPEED_VERYLOW(PE14) | \
1288 PIN_OSPEED_SPEED_VERYLOW(PE15))
1289
1290#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLDOWN(PE00) | \
1291 PIN_PUPDR_PULLDOWN(PE01) | \
1292 PIN_PUPDR_PULLDOWN(PE02) | \
1293 PIN_PUPDR_PULLDOWN(PE03) | \
1294 PIN_PUPDR_PULLDOWN(PE04) | \
1295 PIN_PUPDR_PULLDOWN(PE05) | \
1296 PIN_PUPDR_PULLDOWN(PE06) | \
1297 PIN_PUPDR_PULLDOWN(PE07) | \
1298 PIN_PUPDR_PULLDOWN(PE08) | \
1299 PIN_PUPDR_PULLDOWN(PE09) | \
1300 PIN_PUPDR_PULLDOWN(PE10) | \
1301 PIN_PUPDR_PULLDOWN(PE11) | \
1302 PIN_PUPDR_PULLDOWN(PE12) | \
1303 PIN_PUPDR_PULLDOWN(PE13) | \
1304 PIN_PUPDR_PULLDOWN(PE14) | \
1305 PIN_PUPDR_PULLDOWN(PE15))
1306
1307#define VAL_GPIOE_ODR (PIN_ODR_LEVEL_LOW(PE00) | \
1308 PIN_ODR_LEVEL_LOW(PE01) | \
1309 PIN_ODR_LEVEL_LOW(PE02) | \
1310 PIN_ODR_LEVEL_LOW(PE03) | \
1311 PIN_ODR_LEVEL_LOW(PE04) | \
1312 PIN_ODR_LEVEL_LOW(PE05) | \
1313 PIN_ODR_LEVEL_LOW(PE06) | \
1314 PIN_ODR_LEVEL_LOW(PE07) | \
1315 PIN_ODR_LEVEL_LOW(PE08) | \
1316 PIN_ODR_LEVEL_LOW(PE09) | \
1317 PIN_ODR_LEVEL_LOW(PE10) | \
1318 PIN_ODR_LEVEL_LOW(PE11) | \
1319 PIN_ODR_LEVEL_LOW(PE12) | \
1320 PIN_ODR_LEVEL_LOW(PE13) | \
1321 PIN_ODR_LEVEL_LOW(PE14) | \
1322 PIN_ODR_LEVEL_LOW(PE15))
1323
1324#define VAL_GPIOE_AFRL (PIN_AFIO_AF(PE00, 0) | \
1325 PIN_AFIO_AF(PE01, 0) | \
1326 PIN_AFIO_AF(PE02, 0) | \
1327 PIN_AFIO_AF(PE03, 0) | \
1328 PIN_AFIO_AF(PE04, 0) | \
1329 PIN_AFIO_AF(PE05, 0) | \
1330 PIN_AFIO_AF(PE06, 0) | \
1331 PIN_AFIO_AF(PE07, 0))
1332
1333#define VAL_GPIOE_AFRH (PIN_AFIO_AF(PE08, 0) | \
1334 PIN_AFIO_AF(PE09, 0) | \
1335 PIN_AFIO_AF(PE10, 0) | \
1336 PIN_AFIO_AF(PE11, 0) | \
1337 PIN_AFIO_AF(PE12, 0) | \
1338 PIN_AFIO_AF(PE13, 0) | \
1339 PIN_AFIO_AF(PE14, 0) | \
1340 PIN_AFIO_AF(PE15, 0))
1341
1342#define VAL_GPIOF_MODER (PIN_MODE_INPUT(PF00) | \
1343 PIN_MODE_INPUT(PF01) | \
1344 PIN_MODE_INPUT(PF02) | \
1345 PIN_MODE_INPUT(PF03) | \
1346 PIN_MODE_INPUT(PF04) | \
1347 PIN_MODE_INPUT(PF05) | \
1348 PIN_MODE_INPUT(PF06) | \
1349 PIN_MODE_INPUT(PF07) | \
1350 PIN_MODE_INPUT(PF08) | \
1351 PIN_MODE_INPUT(PF09) | \
1352 PIN_MODE_INPUT(PF10) | \
1353 PIN_MODE_INPUT(PF11) | \
1354 PIN_MODE_INPUT(PF12) | \
1355 PIN_MODE_INPUT(PF13) | \
1356 PIN_MODE_INPUT(PF14) | \
1357 PIN_MODE_INPUT(PF15))
1358
1359#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(PF00) | \
1360 PIN_OTYPE_PUSHPULL(PF01) | \
1361 PIN_OTYPE_PUSHPULL(PF02) | \
1362 PIN_OTYPE_PUSHPULL(PF03) | \
1363 PIN_OTYPE_PUSHPULL(PF04) | \
1364 PIN_OTYPE_PUSHPULL(PF05) | \
1365 PIN_OTYPE_PUSHPULL(PF06) | \
1366 PIN_OTYPE_PUSHPULL(PF07) | \
1367 PIN_OTYPE_PUSHPULL(PF08) | \
1368 PIN_OTYPE_PUSHPULL(PF09) | \
1369 PIN_OTYPE_PUSHPULL(PF10) | \
1370 PIN_OTYPE_PUSHPULL(PF11) | \
1371 PIN_OTYPE_PUSHPULL(PF12) | \
1372 PIN_OTYPE_PUSHPULL(PF13) | \
1373 PIN_OTYPE_PUSHPULL(PF14) | \
1374 PIN_OTYPE_PUSHPULL(PF15))
1375
1376#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PF00) | \
1377 PIN_OSPEED_SPEED_VERYLOW(PF01) | \
1378 PIN_OSPEED_SPEED_VERYLOW(PF02) | \
1379 PIN_OSPEED_SPEED_VERYLOW(PF03) | \
1380 PIN_OSPEED_SPEED_VERYLOW(PF04) | \
1381 PIN_OSPEED_SPEED_VERYLOW(PF05) | \
1382 PIN_OSPEED_SPEED_VERYLOW(PF06) | \
1383 PIN_OSPEED_SPEED_VERYLOW(PF07) | \
1384 PIN_OSPEED_SPEED_VERYLOW(PF08) | \
1385 PIN_OSPEED_SPEED_VERYLOW(PF09) | \
1386 PIN_OSPEED_SPEED_VERYLOW(PF10) | \
1387 PIN_OSPEED_SPEED_VERYLOW(PF11) | \
1388 PIN_OSPEED_SPEED_VERYLOW(PF12) | \
1389 PIN_OSPEED_SPEED_VERYLOW(PF13) | \
1390 PIN_OSPEED_SPEED_VERYLOW(PF14) | \
1391 PIN_OSPEED_SPEED_VERYLOW(PF15))
1392
1393#define VAL_GPIOF_PUPDR (PIN_PUPDR_PULLDOWN(PF00) | \
1394 PIN_PUPDR_PULLDOWN(PF01) | \
1395 PIN_PUPDR_PULLDOWN(PF02) | \
1396 PIN_PUPDR_PULLDOWN(PF03) | \
1397 PIN_PUPDR_PULLDOWN(PF04) | \
1398 PIN_PUPDR_PULLDOWN(PF05) | \
1399 PIN_PUPDR_PULLDOWN(PF06) | \
1400 PIN_PUPDR_PULLDOWN(PF07) | \
1401 PIN_PUPDR_PULLDOWN(PF08) | \
1402 PIN_PUPDR_PULLDOWN(PF09) | \
1403 PIN_PUPDR_PULLDOWN(PF10) | \
1404 PIN_PUPDR_PULLDOWN(PF11) | \
1405 PIN_PUPDR_PULLDOWN(PF12) | \
1406 PIN_PUPDR_PULLDOWN(PF13) | \
1407 PIN_PUPDR_PULLDOWN(PF14) | \
1408 PIN_PUPDR_PULLDOWN(PF15))
1409
1410#define VAL_GPIOF_ODR (PIN_ODR_LEVEL_LOW(PF00) | \
1411 PIN_ODR_LEVEL_LOW(PF01) | \
1412 PIN_ODR_LEVEL_LOW(PF02) | \
1413 PIN_ODR_LEVEL_LOW(PF03) | \
1414 PIN_ODR_LEVEL_LOW(PF04) | \
1415 PIN_ODR_LEVEL_LOW(PF05) | \
1416 PIN_ODR_LEVEL_LOW(PF06) | \
1417 PIN_ODR_LEVEL_LOW(PF07) | \
1418 PIN_ODR_LEVEL_LOW(PF08) | \
1419 PIN_ODR_LEVEL_LOW(PF09) | \
1420 PIN_ODR_LEVEL_LOW(PF10) | \
1421 PIN_ODR_LEVEL_LOW(PF11) | \
1422 PIN_ODR_LEVEL_LOW(PF12) | \
1423 PIN_ODR_LEVEL_LOW(PF13) | \
1424 PIN_ODR_LEVEL_LOW(PF14) | \
1425 PIN_ODR_LEVEL_LOW(PF15))
1426
1427#define VAL_GPIOF_AFRL (PIN_AFIO_AF(PF00, 0) | \
1428 PIN_AFIO_AF(PF01, 0) | \
1429 PIN_AFIO_AF(PF02, 0) | \
1430 PIN_AFIO_AF(PF03, 0) | \
1431 PIN_AFIO_AF(PF04, 0) | \
1432 PIN_AFIO_AF(PF05, 0) | \
1433 PIN_AFIO_AF(PF06, 0) | \
1434 PIN_AFIO_AF(PF07, 0))
1435
1436#define VAL_GPIOF_AFRH (PIN_AFIO_AF(PF08, 0) | \
1437 PIN_AFIO_AF(PF09, 0) | \
1438 PIN_AFIO_AF(PF10, 0) | \
1439 PIN_AFIO_AF(PF11, 0) | \
1440 PIN_AFIO_AF(PF12, 0) | \
1441 PIN_AFIO_AF(PF13, 0) | \
1442 PIN_AFIO_AF(PF14, 0) | \
1443 PIN_AFIO_AF(PF15, 0))
1444
1445#define VAL_GPIOG_MODER (PIN_MODE_INPUT(PG00) | \
1446 PIN_MODE_INPUT(PG01) | \
1447 PIN_MODE_INPUT(PG02) | \
1448 PIN_MODE_INPUT(PG03) | \
1449 PIN_MODE_INPUT(PG04) | \
1450 PIN_MODE_INPUT(PG05) | \
1451 PIN_MODE_INPUT(PG06) | \
1452 PIN_MODE_INPUT(PG07) | \
1453 PIN_MODE_INPUT(PG08) | \
1454 PIN_MODE_INPUT(PG09) | \
1455 PIN_MODE_INPUT(PG10) | \
1456 PIN_MODE_INPUT(PG11) | \
1457 PIN_MODE_INPUT(PG12) | \
1458 PIN_MODE_INPUT(PG13) | \
1459 PIN_MODE_INPUT(PG14) | \
1460 PIN_MODE_INPUT(PG15))
1461
1462#define VAL_GPIOG_OTYPER (PIN_OTYPE_PUSHPULL(PG00) | \
1463 PIN_OTYPE_PUSHPULL(PG01) | \
1464 PIN_OTYPE_PUSHPULL(PG02) | \
1465 PIN_OTYPE_PUSHPULL(PG03) | \
1466 PIN_OTYPE_PUSHPULL(PG04) | \
1467 PIN_OTYPE_PUSHPULL(PG05) | \
1468 PIN_OTYPE_PUSHPULL(PG06) | \
1469 PIN_OTYPE_PUSHPULL(PG07) | \
1470 PIN_OTYPE_PUSHPULL(PG08) | \
1471 PIN_OTYPE_PUSHPULL(PG09) | \
1472 PIN_OTYPE_PUSHPULL(PG10) | \
1473 PIN_OTYPE_PUSHPULL(PG11) | \
1474 PIN_OTYPE_PUSHPULL(PG12) | \
1475 PIN_OTYPE_PUSHPULL(PG13) | \
1476 PIN_OTYPE_PUSHPULL(PG14) | \
1477 PIN_OTYPE_PUSHPULL(PG15))
1478
1479#define VAL_GPIOG_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PG00) | \
1480 PIN_OSPEED_SPEED_VERYLOW(PG01) | \
1481 PIN_OSPEED_SPEED_VERYLOW(PG02) | \
1482 PIN_OSPEED_SPEED_VERYLOW(PG03) | \
1483 PIN_OSPEED_SPEED_VERYLOW(PG04) | \
1484 PIN_OSPEED_SPEED_VERYLOW(PG05) | \
1485 PIN_OSPEED_SPEED_VERYLOW(PG06) | \
1486 PIN_OSPEED_SPEED_VERYLOW(PG07) | \
1487 PIN_OSPEED_SPEED_VERYLOW(PG08) | \
1488 PIN_OSPEED_SPEED_VERYLOW(PG09) | \
1489 PIN_OSPEED_SPEED_VERYLOW(PG10) | \
1490 PIN_OSPEED_SPEED_VERYLOW(PG11) | \
1491 PIN_OSPEED_SPEED_VERYLOW(PG12) | \
1492 PIN_OSPEED_SPEED_VERYLOW(PG13) | \
1493 PIN_OSPEED_SPEED_VERYLOW(PG14) | \
1494 PIN_OSPEED_SPEED_VERYLOW(PG15))
1495
1496#define VAL_GPIOG_PUPDR (PIN_PUPDR_PULLDOWN(PG00) | \
1497 PIN_PUPDR_PULLDOWN(PG01) | \
1498 PIN_PUPDR_PULLDOWN(PG02) | \
1499 PIN_PUPDR_PULLDOWN(PG03) | \
1500 PIN_PUPDR_PULLDOWN(PG04) | \
1501 PIN_PUPDR_PULLDOWN(PG05) | \
1502 PIN_PUPDR_PULLDOWN(PG06) | \
1503 PIN_PUPDR_PULLDOWN(PG07) | \
1504 PIN_PUPDR_PULLDOWN(PG08) | \
1505 PIN_PUPDR_PULLDOWN(PG09) | \
1506 PIN_PUPDR_PULLDOWN(PG10) | \
1507 PIN_PUPDR_PULLDOWN(PG11) | \
1508 PIN_PUPDR_PULLDOWN(PG12) | \
1509 PIN_PUPDR_PULLDOWN(PG13) | \
1510 PIN_PUPDR_PULLDOWN(PG14) | \
1511 PIN_PUPDR_PULLDOWN(PG15))
1512
1513#define VAL_GPIOG_ODR (PIN_ODR_LEVEL_LOW(PG00) | \
1514 PIN_ODR_LEVEL_LOW(PG01) | \
1515 PIN_ODR_LEVEL_LOW(PG02) | \
1516 PIN_ODR_LEVEL_LOW(PG03) | \
1517 PIN_ODR_LEVEL_LOW(PG04) | \
1518 PIN_ODR_LEVEL_LOW(PG05) | \
1519 PIN_ODR_LEVEL_LOW(PG06) | \
1520 PIN_ODR_LEVEL_LOW(PG07) | \
1521 PIN_ODR_LEVEL_LOW(PG08) | \
1522 PIN_ODR_LEVEL_LOW(PG09) | \
1523 PIN_ODR_LEVEL_LOW(PG10) | \
1524 PIN_ODR_LEVEL_LOW(PG11) | \
1525 PIN_ODR_LEVEL_LOW(PG12) | \
1526 PIN_ODR_LEVEL_LOW(PG13) | \
1527 PIN_ODR_LEVEL_LOW(PG14) | \
1528 PIN_ODR_LEVEL_LOW(PG15))
1529
1530#define VAL_GPIOG_AFRL (PIN_AFIO_AF(PG00, 0) | \
1531 PIN_AFIO_AF(PG01, 0) | \
1532 PIN_AFIO_AF(PG02, 0) | \
1533 PIN_AFIO_AF(PG03, 0) | \
1534 PIN_AFIO_AF(PG04, 0) | \
1535 PIN_AFIO_AF(PG05, 0) | \
1536 PIN_AFIO_AF(PG06, 0) | \
1537 PIN_AFIO_AF(PG07, 0))
1538
1539#define VAL_GPIOG_AFRH (PIN_AFIO_AF(PG08, 0) | \
1540 PIN_AFIO_AF(PG09, 0) | \
1541 PIN_AFIO_AF(PG10, 0) | \
1542 PIN_AFIO_AF(PG11, 0) | \
1543 PIN_AFIO_AF(PG12, 0) | \
1544 PIN_AFIO_AF(PG13, 0) | \
1545 PIN_AFIO_AF(PG14, 0) | \
1546 PIN_AFIO_AF(PG15, 0))
1547
1548#define VAL_GPIOH_MODER (PIN_MODE_ALTERNATE(OSC_IN) | \
1549 PIN_MODE_ALTERNATE(OSC_OUT) | \
1550 PIN_MODE_INPUT(PH02) | \
1551 PIN_MODE_INPUT(PH03) | \
1552 PIN_MODE_INPUT(PH04) | \
1553 PIN_MODE_INPUT(PH05) | \
1554 PIN_MODE_INPUT(PH06) | \
1555 PIN_MODE_INPUT(PH07) | \
1556 PIN_MODE_INPUT(PH08) | \
1557 PIN_MODE_INPUT(PH09) | \
1558 PIN_MODE_INPUT(PH10) | \
1559 PIN_MODE_INPUT(PH11) | \
1560 PIN_MODE_INPUT(PH12) | \
1561 PIN_MODE_INPUT(PH13) | \
1562 PIN_MODE_INPUT(PH14) | \
1563 PIN_MODE_INPUT(PH15))
1564
1565#define VAL_GPIOH_OTYPER (PIN_OTYPE_PUSHPULL(OSC_IN) | \
1566 PIN_OTYPE_PUSHPULL(OSC_OUT) | \
1567 PIN_OTYPE_PUSHPULL(PH02) | \
1568 PIN_OTYPE_PUSHPULL(PH03) | \
1569 PIN_OTYPE_PUSHPULL(PH04) | \
1570 PIN_OTYPE_PUSHPULL(PH05) | \
1571 PIN_OTYPE_PUSHPULL(PH06) | \
1572 PIN_OTYPE_PUSHPULL(PH07) | \
1573 PIN_OTYPE_PUSHPULL(PH08) | \
1574 PIN_OTYPE_PUSHPULL(PH09) | \
1575 PIN_OTYPE_PUSHPULL(PH10) | \
1576 PIN_OTYPE_PUSHPULL(PH11) | \
1577 PIN_OTYPE_PUSHPULL(PH12) | \
1578 PIN_OTYPE_PUSHPULL(PH13) | \
1579 PIN_OTYPE_PUSHPULL(PH14) | \
1580 PIN_OTYPE_PUSHPULL(PH15))
1581
1582#define VAL_GPIOH_OSPEEDR (PIN_OSPEED_SPEED_HIGH(OSC_IN) | \
1583 PIN_OSPEED_SPEED_HIGH(OSC_OUT) | \
1584 PIN_OSPEED_SPEED_VERYLOW(PH02) | \
1585 PIN_OSPEED_SPEED_VERYLOW(PH03) | \
1586 PIN_OSPEED_SPEED_VERYLOW(PH04) | \
1587 PIN_OSPEED_SPEED_VERYLOW(PH05) | \
1588 PIN_OSPEED_SPEED_VERYLOW(PH06) | \
1589 PIN_OSPEED_SPEED_VERYLOW(PH07) | \
1590 PIN_OSPEED_SPEED_VERYLOW(PH08) | \
1591 PIN_OSPEED_SPEED_VERYLOW(PH09) | \
1592 PIN_OSPEED_SPEED_VERYLOW(PH10) | \
1593 PIN_OSPEED_SPEED_VERYLOW(PH11) | \
1594 PIN_OSPEED_SPEED_VERYLOW(PH12) | \
1595 PIN_OSPEED_SPEED_VERYLOW(PH13) | \
1596 PIN_OSPEED_SPEED_VERYLOW(PH14) | \
1597 PIN_OSPEED_SPEED_VERYLOW(PH15))
1598
1599#define VAL_GPIOH_PUPDR (PIN_PUPDR_FLOATING(OSC_IN) | \
1600 PIN_PUPDR_FLOATING(OSC_OUT) | \
1601 PIN_PUPDR_PULLDOWN(PH02) | \
1602 PIN_PUPDR_PULLDOWN(PH03) | \
1603 PIN_PUPDR_PULLDOWN(PH04) | \
1604 PIN_PUPDR_PULLDOWN(PH05) | \
1605 PIN_PUPDR_PULLDOWN(PH06) | \
1606 PIN_PUPDR_PULLDOWN(PH07) | \
1607 PIN_PUPDR_PULLDOWN(PH08) | \
1608 PIN_PUPDR_PULLDOWN(PH09) | \
1609 PIN_PUPDR_PULLDOWN(PH10) | \
1610 PIN_PUPDR_PULLDOWN(PH11) | \
1611 PIN_PUPDR_PULLDOWN(PH12) | \
1612 PIN_PUPDR_PULLDOWN(PH13) | \
1613 PIN_PUPDR_PULLDOWN(PH14) | \
1614 PIN_PUPDR_PULLDOWN(PH15))
1615
1616#define VAL_GPIOH_ODR (PIN_ODR_LEVEL_HIGH(OSC_IN) | \
1617 PIN_ODR_LEVEL_HIGH(OSC_OUT) | \
1618 PIN_ODR_LEVEL_LOW(PH02) | \
1619 PIN_ODR_LEVEL_LOW(PH03) | \
1620 PIN_ODR_LEVEL_LOW(PH04) | \
1621 PIN_ODR_LEVEL_LOW(PH05) | \
1622 PIN_ODR_LEVEL_LOW(PH06) | \
1623 PIN_ODR_LEVEL_LOW(PH07) | \
1624 PIN_ODR_LEVEL_LOW(PH08) | \
1625 PIN_ODR_LEVEL_LOW(PH09) | \
1626 PIN_ODR_LEVEL_LOW(PH10) | \
1627 PIN_ODR_LEVEL_LOW(PH11) | \
1628 PIN_ODR_LEVEL_LOW(PH12) | \
1629 PIN_ODR_LEVEL_LOW(PH13) | \
1630 PIN_ODR_LEVEL_LOW(PH14) | \
1631 PIN_ODR_LEVEL_LOW(PH15))
1632
1633#define VAL_GPIOH_AFRL (PIN_AFIO_AF(OSC_IN, 0) | \
1634 PIN_AFIO_AF(OSC_OUT, 0) | \
1635 PIN_AFIO_AF(PH02, 0) | \
1636 PIN_AFIO_AF(PH03, 0) | \
1637 PIN_AFIO_AF(PH04, 0) | \
1638 PIN_AFIO_AF(PH05, 0) | \
1639 PIN_AFIO_AF(PH06, 0) | \
1640 PIN_AFIO_AF(PH07, 0))
1641
1642#define VAL_GPIOH_AFRH (PIN_AFIO_AF(PH08, 0) | \
1643 PIN_AFIO_AF(PH09, 0) | \
1644 PIN_AFIO_AF(PH10, 0) | \
1645 PIN_AFIO_AF(PH11, 0) | \
1646 PIN_AFIO_AF(PH12, 0) | \
1647 PIN_AFIO_AF(PH13, 0) | \
1648 PIN_AFIO_AF(PH14, 0) | \
1649 PIN_AFIO_AF(PH15, 0))
1650
1651#define VAL_GPIOI_MODER (PIN_MODE_INPUT(PI00) | \
1652 PIN_MODE_INPUT(PI01) | \
1653 PIN_MODE_INPUT(PI02) | \
1654 PIN_MODE_INPUT(PI03) | \
1655 PIN_MODE_INPUT(PI04) | \
1656 PIN_MODE_INPUT(PI05) | \
1657 PIN_MODE_INPUT(PI06) | \
1658 PIN_MODE_INPUT(PI07) | \
1659 PIN_MODE_INPUT(PI08) | \
1660 PIN_MODE_INPUT(PI09) | \
1661 PIN_MODE_INPUT(PI10) | \
1662 PIN_MODE_INPUT(PI11) | \
1663 PIN_MODE_INPUT(PI12) | \
1664 PIN_MODE_INPUT(PI13) | \
1665 PIN_MODE_INPUT(PI14) | \
1666 PIN_MODE_INPUT(PI15))
1667
1668#define VAL_GPIOI_OTYPER (PIN_OTYPE_PUSHPULL(PI00) | \
1669 PIN_OTYPE_PUSHPULL(PI01) | \
1670 PIN_OTYPE_PUSHPULL(PI02) | \
1671 PIN_OTYPE_PUSHPULL(PI03) | \
1672 PIN_OTYPE_PUSHPULL(PI04) | \
1673 PIN_OTYPE_PUSHPULL(PI05) | \
1674 PIN_OTYPE_PUSHPULL(PI06) | \
1675 PIN_OTYPE_PUSHPULL(PI07) | \
1676 PIN_OTYPE_PUSHPULL(PI08) | \
1677 PIN_OTYPE_PUSHPULL(PI09) | \
1678 PIN_OTYPE_PUSHPULL(PI10) | \
1679 PIN_OTYPE_PUSHPULL(PI11) | \
1680 PIN_OTYPE_PUSHPULL(PI12) | \
1681 PIN_OTYPE_PUSHPULL(PI13) | \
1682 PIN_OTYPE_PUSHPULL(PI14) | \
1683 PIN_OTYPE_PUSHPULL(PI15))
1684
1685#define VAL_GPIOI_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PI00) | \
1686 PIN_OSPEED_SPEED_VERYLOW(PI01) | \
1687 PIN_OSPEED_SPEED_VERYLOW(PI02) | \
1688 PIN_OSPEED_SPEED_VERYLOW(PI03) | \
1689 PIN_OSPEED_SPEED_VERYLOW(PI04) | \
1690 PIN_OSPEED_SPEED_VERYLOW(PI05) | \
1691 PIN_OSPEED_SPEED_VERYLOW(PI06) | \
1692 PIN_OSPEED_SPEED_VERYLOW(PI07) | \
1693 PIN_OSPEED_SPEED_VERYLOW(PI08) | \
1694 PIN_OSPEED_SPEED_VERYLOW(PI09) | \
1695 PIN_OSPEED_SPEED_VERYLOW(PI10) | \
1696 PIN_OSPEED_SPEED_VERYLOW(PI11) | \
1697 PIN_OSPEED_SPEED_VERYLOW(PI12) | \
1698 PIN_OSPEED_SPEED_VERYLOW(PI13) | \
1699 PIN_OSPEED_SPEED_VERYLOW(PI14) | \
1700 PIN_OSPEED_SPEED_VERYLOW(PI15))
1701
1702#define VAL_GPIOI_PUPDR (PIN_PUPDR_PULLDOWN(PI00) | \
1703 PIN_PUPDR_PULLDOWN(PI01) | \
1704 PIN_PUPDR_PULLDOWN(PI02) | \
1705 PIN_PUPDR_PULLDOWN(PI03) | \
1706 PIN_PUPDR_PULLDOWN(PI04) | \
1707 PIN_PUPDR_PULLDOWN(PI05) | \
1708 PIN_PUPDR_PULLDOWN(PI06) | \
1709 PIN_PUPDR_PULLDOWN(PI07) | \
1710 PIN_PUPDR_PULLDOWN(PI08) | \
1711 PIN_PUPDR_PULLDOWN(PI09) | \
1712 PIN_PUPDR_PULLDOWN(PI10) | \
1713 PIN_PUPDR_PULLDOWN(PI11) | \
1714 PIN_PUPDR_PULLDOWN(PI12) | \
1715 PIN_PUPDR_PULLDOWN(PI13) | \
1716 PIN_PUPDR_PULLDOWN(PI14) | \
1717 PIN_PUPDR_PULLDOWN(PI15))
1718
1719#define VAL_GPIOI_ODR (PIN_ODR_LEVEL_LOW(PI00) | \
1720 PIN_ODR_LEVEL_LOW(PI01) | \
1721 PIN_ODR_LEVEL_LOW(PI02) | \
1722 PIN_ODR_LEVEL_LOW(PI03) | \
1723 PIN_ODR_LEVEL_LOW(PI04) | \
1724 PIN_ODR_LEVEL_LOW(PI05) | \
1725 PIN_ODR_LEVEL_LOW(PI06) | \
1726 PIN_ODR_LEVEL_LOW(PI07) | \
1727 PIN_ODR_LEVEL_LOW(PI08) | \
1728 PIN_ODR_LEVEL_LOW(PI09) | \
1729 PIN_ODR_LEVEL_LOW(PI10) | \
1730 PIN_ODR_LEVEL_LOW(PI11) | \
1731 PIN_ODR_LEVEL_LOW(PI12) | \
1732 PIN_ODR_LEVEL_LOW(PI13) | \
1733 PIN_ODR_LEVEL_LOW(PI14) | \
1734 PIN_ODR_LEVEL_LOW(PI15))
1735
1736#define VAL_GPIOI_AFRL (PIN_AFIO_AF(PI00, 0) | \
1737 PIN_AFIO_AF(PI01, 0) | \
1738 PIN_AFIO_AF(PI02, 0) | \
1739 PIN_AFIO_AF(PI03, 0) | \
1740 PIN_AFIO_AF(PI04, 0) | \
1741 PIN_AFIO_AF(PI05, 0) | \
1742 PIN_AFIO_AF(PI06, 0) | \
1743 PIN_AFIO_AF(PI07, 0))
1744
1745#define VAL_GPIOI_AFRH (PIN_AFIO_AF(PI08, 0) | \
1746 PIN_AFIO_AF(PI09, 0) | \
1747 PIN_AFIO_AF(PI10, 0) | \
1748 PIN_AFIO_AF(PI11, 0) | \
1749 PIN_AFIO_AF(PI12, 0) | \
1750 PIN_AFIO_AF(PI13, 0) | \
1751 PIN_AFIO_AF(PI14, 0) | \
1752 PIN_AFIO_AF(PI15, 0))
1753
1754#define VAL_GPIOJ_MODER (PIN_MODE_INPUT(PJ00) | \
1755 PIN_MODE_INPUT(PJ01) | \
1756 PIN_MODE_INPUT(PJ02) | \
1757 PIN_MODE_INPUT(PJ03) | \
1758 PIN_MODE_INPUT(PJ04) | \
1759 PIN_MODE_INPUT(PJ05) | \
1760 PIN_MODE_INPUT(PJ06) | \
1761 PIN_MODE_INPUT(PJ07) | \
1762 PIN_MODE_INPUT(PJ08) | \
1763 PIN_MODE_INPUT(PJ09) | \
1764 PIN_MODE_INPUT(PJ10) | \
1765 PIN_MODE_INPUT(PJ11) | \
1766 PIN_MODE_INPUT(PJ12) | \
1767 PIN_MODE_INPUT(PJ13) | \
1768 PIN_MODE_INPUT(PJ14) | \
1769 PIN_MODE_INPUT(PJ15))
1770
1771#define VAL_GPIOJ_OTYPER (PIN_OTYPE_PUSHPULL(PJ00) | \
1772 PIN_OTYPE_PUSHPULL(PJ01) | \
1773 PIN_OTYPE_PUSHPULL(PJ02) | \
1774 PIN_OTYPE_PUSHPULL(PJ03) | \
1775 PIN_OTYPE_PUSHPULL(PJ04) | \
1776 PIN_OTYPE_PUSHPULL(PJ05) | \
1777 PIN_OTYPE_PUSHPULL(PJ06) | \
1778 PIN_OTYPE_PUSHPULL(PJ07) | \
1779 PIN_OTYPE_PUSHPULL(PJ08) | \
1780 PIN_OTYPE_PUSHPULL(PJ09) | \
1781 PIN_OTYPE_PUSHPULL(PJ10) | \
1782 PIN_OTYPE_PUSHPULL(PJ11) | \
1783 PIN_OTYPE_PUSHPULL(PJ12) | \
1784 PIN_OTYPE_PUSHPULL(PJ13) | \
1785 PIN_OTYPE_PUSHPULL(PJ14) | \
1786 PIN_OTYPE_PUSHPULL(PJ15))
1787
1788#define VAL_GPIOJ_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PJ00) | \
1789 PIN_OSPEED_SPEED_VERYLOW(PJ01) | \
1790 PIN_OSPEED_SPEED_VERYLOW(PJ02) | \
1791 PIN_OSPEED_SPEED_VERYLOW(PJ03) | \
1792 PIN_OSPEED_SPEED_VERYLOW(PJ04) | \
1793 PIN_OSPEED_SPEED_VERYLOW(PJ05) | \
1794 PIN_OSPEED_SPEED_VERYLOW(PJ06) | \
1795 PIN_OSPEED_SPEED_VERYLOW(PJ07) | \
1796 PIN_OSPEED_SPEED_VERYLOW(PJ08) | \
1797 PIN_OSPEED_SPEED_VERYLOW(PJ09) | \
1798 PIN_OSPEED_SPEED_VERYLOW(PJ10) | \
1799 PIN_OSPEED_SPEED_VERYLOW(PJ11) | \
1800 PIN_OSPEED_SPEED_VERYLOW(PJ12) | \
1801 PIN_OSPEED_SPEED_VERYLOW(PJ13) | \
1802 PIN_OSPEED_SPEED_VERYLOW(PJ14) | \
1803 PIN_OSPEED_SPEED_VERYLOW(PJ15))
1804
1805#define VAL_GPIOJ_PUPDR (PIN_PUPDR_PULLDOWN(PJ00) | \
1806 PIN_PUPDR_PULLDOWN(PJ01) | \
1807 PIN_PUPDR_PULLDOWN(PJ02) | \
1808 PIN_PUPDR_PULLDOWN(PJ03) | \
1809 PIN_PUPDR_PULLDOWN(PJ04) | \
1810 PIN_PUPDR_PULLDOWN(PJ05) | \
1811 PIN_PUPDR_PULLDOWN(PJ06) | \
1812 PIN_PUPDR_PULLDOWN(PJ07) | \
1813 PIN_PUPDR_PULLDOWN(PJ08) | \
1814 PIN_PUPDR_PULLDOWN(PJ09) | \
1815 PIN_PUPDR_PULLDOWN(PJ10) | \
1816 PIN_PUPDR_PULLDOWN(PJ11) | \
1817 PIN_PUPDR_PULLDOWN(PJ12) | \
1818 PIN_PUPDR_PULLDOWN(PJ13) | \
1819 PIN_PUPDR_PULLDOWN(PJ14) | \
1820 PIN_PUPDR_PULLDOWN(PJ15))
1821
1822#define VAL_GPIOJ_ODR (PIN_ODR_LEVEL_LOW(PJ00) | \
1823 PIN_ODR_LEVEL_LOW(PJ01) | \
1824 PIN_ODR_LEVEL_LOW(PJ02) | \
1825 PIN_ODR_LEVEL_LOW(PJ03) | \
1826 PIN_ODR_LEVEL_LOW(PJ04) | \
1827 PIN_ODR_LEVEL_LOW(PJ05) | \
1828 PIN_ODR_LEVEL_LOW(PJ06) | \
1829 PIN_ODR_LEVEL_LOW(PJ07) | \
1830 PIN_ODR_LEVEL_LOW(PJ08) | \
1831 PIN_ODR_LEVEL_LOW(PJ09) | \
1832 PIN_ODR_LEVEL_LOW(PJ10) | \
1833 PIN_ODR_LEVEL_LOW(PJ11) | \
1834 PIN_ODR_LEVEL_LOW(PJ12) | \
1835 PIN_ODR_LEVEL_LOW(PJ13) | \
1836 PIN_ODR_LEVEL_LOW(PJ14) | \
1837 PIN_ODR_LEVEL_LOW(PJ15))
1838
1839#define VAL_GPIOJ_AFRL (PIN_AFIO_AF(PJ00, 0) | \
1840 PIN_AFIO_AF(PJ01, 0) | \
1841 PIN_AFIO_AF(PJ02, 0) | \
1842 PIN_AFIO_AF(PJ03, 0) | \
1843 PIN_AFIO_AF(PJ04, 0) | \
1844 PIN_AFIO_AF(PJ05, 0) | \
1845 PIN_AFIO_AF(PJ06, 0) | \
1846 PIN_AFIO_AF(PJ07, 0))
1847
1848#define VAL_GPIOJ_AFRH (PIN_AFIO_AF(PJ08, 0) | \
1849 PIN_AFIO_AF(PJ09, 0) | \
1850 PIN_AFIO_AF(PJ10, 0) | \
1851 PIN_AFIO_AF(PJ11, 0) | \
1852 PIN_AFIO_AF(PJ12, 0) | \
1853 PIN_AFIO_AF(PJ13, 0) | \
1854 PIN_AFIO_AF(PJ14, 0) | \
1855 PIN_AFIO_AF(PJ15, 0))
1856
1857#define VAL_GPIOK_MODER (PIN_MODE_INPUT(PK00) | \
1858 PIN_MODE_INPUT(PK01) | \
1859 PIN_MODE_INPUT(PK02) | \
1860 PIN_MODE_INPUT(PK03) | \
1861 PIN_MODE_INPUT(PK04) | \
1862 PIN_MODE_INPUT(PK05) | \
1863 PIN_MODE_INPUT(PK06) | \
1864 PIN_MODE_INPUT(PK07) | \
1865 PIN_MODE_INPUT(PK08) | \
1866 PIN_MODE_INPUT(PK09) | \
1867 PIN_MODE_INPUT(PK10) | \
1868 PIN_MODE_INPUT(PK11) | \
1869 PIN_MODE_INPUT(PK12) | \
1870 PIN_MODE_INPUT(PK13) | \
1871 PIN_MODE_INPUT(PK14) | \
1872 PIN_MODE_INPUT(PK15))
1873
1874#define VAL_GPIOK_OTYPER (PIN_OTYPE_PUSHPULL(PK00) | \
1875 PIN_OTYPE_PUSHPULL(PK01) | \
1876 PIN_OTYPE_PUSHPULL(PK02) | \
1877 PIN_OTYPE_PUSHPULL(PK03) | \
1878 PIN_OTYPE_PUSHPULL(PK04) | \
1879 PIN_OTYPE_PUSHPULL(PK05) | \
1880 PIN_OTYPE_PUSHPULL(PK06) | \
1881 PIN_OTYPE_PUSHPULL(PK07) | \
1882 PIN_OTYPE_PUSHPULL(PK08) | \
1883 PIN_OTYPE_PUSHPULL(PK09) | \
1884 PIN_OTYPE_PUSHPULL(PK10) | \
1885 PIN_OTYPE_PUSHPULL(PK11) | \
1886 PIN_OTYPE_PUSHPULL(PK12) | \
1887 PIN_OTYPE_PUSHPULL(PK13) | \
1888 PIN_OTYPE_PUSHPULL(PK14) | \
1889 PIN_OTYPE_PUSHPULL(PK15))
1890
1891#define VAL_GPIOK_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PK00) | \
1892 PIN_OSPEED_SPEED_VERYLOW(PK01) | \
1893 PIN_OSPEED_SPEED_VERYLOW(PK02) | \
1894 PIN_OSPEED_SPEED_VERYLOW(PK03) | \
1895 PIN_OSPEED_SPEED_VERYLOW(PK04) | \
1896 PIN_OSPEED_SPEED_VERYLOW(PK05) | \
1897 PIN_OSPEED_SPEED_VERYLOW(PK06) | \
1898 PIN_OSPEED_SPEED_VERYLOW(PK07) | \
1899 PIN_OSPEED_SPEED_VERYLOW(PK08) | \
1900 PIN_OSPEED_SPEED_VERYLOW(PK09) | \
1901 PIN_OSPEED_SPEED_VERYLOW(PK10) | \
1902 PIN_OSPEED_SPEED_VERYLOW(PK11) | \
1903 PIN_OSPEED_SPEED_VERYLOW(PK12) | \
1904 PIN_OSPEED_SPEED_VERYLOW(PK13) | \
1905 PIN_OSPEED_SPEED_VERYLOW(PK14) | \
1906 PIN_OSPEED_SPEED_VERYLOW(PK15))
1907
1908#define VAL_GPIOK_PUPDR (PIN_PUPDR_PULLDOWN(PK00) | \
1909 PIN_PUPDR_PULLDOWN(PK01) | \
1910 PIN_PUPDR_PULLDOWN(PK02) | \
1911 PIN_PUPDR_PULLDOWN(PK03) | \
1912 PIN_PUPDR_PULLDOWN(PK04) | \
1913 PIN_PUPDR_PULLDOWN(PK05) | \
1914 PIN_PUPDR_PULLDOWN(PK06) | \
1915 PIN_PUPDR_PULLDOWN(PK07) | \
1916 PIN_PUPDR_PULLDOWN(PK08) | \
1917 PIN_PUPDR_PULLDOWN(PK09) | \
1918 PIN_PUPDR_PULLDOWN(PK10) | \
1919 PIN_PUPDR_PULLDOWN(PK11) | \
1920 PIN_PUPDR_PULLDOWN(PK12) | \
1921 PIN_PUPDR_PULLDOWN(PK13) | \
1922 PIN_PUPDR_PULLDOWN(PK14) | \
1923 PIN_PUPDR_PULLDOWN(PK15))
1924
1925#define VAL_GPIOK_ODR (PIN_ODR_LEVEL_LOW(PK00) | \
1926 PIN_ODR_LEVEL_LOW(PK01) | \
1927 PIN_ODR_LEVEL_LOW(PK02) | \
1928 PIN_ODR_LEVEL_LOW(PK03) | \
1929 PIN_ODR_LEVEL_LOW(PK04) | \
1930 PIN_ODR_LEVEL_LOW(PK05) | \
1931 PIN_ODR_LEVEL_LOW(PK06) | \
1932 PIN_ODR_LEVEL_LOW(PK07) | \
1933 PIN_ODR_LEVEL_LOW(PK08) | \
1934 PIN_ODR_LEVEL_LOW(PK09) | \
1935 PIN_ODR_LEVEL_LOW(PK10) | \
1936 PIN_ODR_LEVEL_LOW(PK11) | \
1937 PIN_ODR_LEVEL_LOW(PK12) | \
1938 PIN_ODR_LEVEL_LOW(PK13) | \
1939 PIN_ODR_LEVEL_LOW(PK14) | \
1940 PIN_ODR_LEVEL_LOW(PK15))
1941
1942#define VAL_GPIOK_AFRL (PIN_AFIO_AF(PK00, 0) | \
1943 PIN_AFIO_AF(PK01, 0) | \
1944 PIN_AFIO_AF(PK02, 0) | \
1945 PIN_AFIO_AF(PK03, 0) | \
1946 PIN_AFIO_AF(PK04, 0) | \
1947 PIN_AFIO_AF(PK05, 0) | \
1948 PIN_AFIO_AF(PK06, 0) | \
1949 PIN_AFIO_AF(PK07, 0))
1950
1951#define VAL_GPIOK_AFRH (PIN_AFIO_AF(PK08, 0) | \
1952 PIN_AFIO_AF(PK09, 0) | \
1953 PIN_AFIO_AF(PK10, 0) | \
1954 PIN_AFIO_AF(PK11, 0) | \
1955 PIN_AFIO_AF(PK12, 0) | \
1956 PIN_AFIO_AF(PK13, 0) | \
1957 PIN_AFIO_AF(PK14, 0) | \
1958 PIN_AFIO_AF(PK15, 0))
1959
1960#define AF_UART4_TX 8U
1961#define AF_LINE_UART4_TX 8U
1962#define AF_UART4_RX 8U
1963#define AF_LINE_UART4_RX 8U
1964#define AF_SERVO1 1U
1965#define AF_LINE_SERVO1 1U
1966#define AF_UART2_RX 7U
1967#define AF_LINE_UART2_RX 7U
1968#define AF_SPI1_SCK 5U
1969#define AF_LINE_SPI1_SCK 5U
1970#define AF_SPI1_MISO 5U
1971#define AF_LINE_SPI1_MISO 5U
1972#define AF_SPI1_MOSI 5U
1973#define AF_LINE_SPI1_MOSI 5U
1974#define AF_CU1_CH1 1U
1975#define AF_LINE_CU1_CH1 1U
1976#define AF_USART1_RX 7U
1977#define AF_LINE_USART1_RX 7U
1978#define AF_OTG_FS_DM 10U
1979#define AF_LINE_OTG_FS_DM 10U
1980#define AF_OTG_FS_DP 10U
1981#define AF_LINE_OTG_FS_DP 10U
1982#define AF_SWDIO 0U
1983#define AF_LINE_SWDIO 0U
1984#define AF_SWCLK 0U
1985#define AF_LINE_SWCLK 0U
1986#define AF_SERVO5 1U
1987#define AF_LINE_SERVO5 1U
1988#define AF_SERVO0 2U
1989#define AF_LINE_SERVO0 2U
1990#define AF_SERVO6 2U
1991#define AF_LINE_SERVO6 2U
1992#define AF_SERVO4 1U
1993#define AF_LINE_SERVO4 1U
1994#define AF_SERVO3 2U
1995#define AF_LINE_SERVO3 2U
1996#define AF_SERVO2 2U
1997#define AF_LINE_SERVO2 2U
1998#define AF_USART1_TX 7U
1999#define AF_LINE_USART1_TX 7U
2000#define AF_I2C1_SDA 4U
2001#define AF_LINE_I2C1_SDA 4U
2002#define AF_I2C1_SCL 4U
2003#define AF_LINE_I2C1_SCL 4U
2004#define AF_I2C2_SCL 4U
2005#define AF_LINE_I2C2_SCL 4U
2006#define AF_I2C2_SDA 4U
2007#define AF_LINE_I2C2_SDA 4U
2008#define AF_USART6_TX 8U
2009#define AF_LINE_USART6_TX 8U
2010#define AF_USART6_RX 8U
2011#define AF_LINE_USART6_RX 8U
2012#define AF_SDIO_D0 12U
2013#define AF_LINE_SDIO_D0 12U
2014#define AF_SDIO_D1 12U
2015#define AF_LINE_SDIO_D1 12U
2016#define AF_SDIO_D2 12U
2017#define AF_LINE_SDIO_D2 12U
2018#define AF_SDIO_D3 12U
2019#define AF_LINE_SDIO_D3 12U
2020#define AF_SDIO_CK 12U
2021#define AF_LINE_SDIO_CK 12U
2022#define AF_OSC32_IN 0U
2023#define AF_LINE_OSC32_IN 0U
2024#define AF_OSC32_OUT 0U
2025#define AF_LINE_OSC32_OUT 0U
2026#define AF_SDIO_CMD 12U
2027#define AF_LINE_SDIO_CMD 12U
2028#define AF_OSC_IN 0U
2029#define AF_LINE_OSC_IN 0U
2030#define AF_OSC_OUT 0U
2031#define AF_LINE_OSC_OUT 0U
2032
2033
2034#define SERVO1_TIM 2
2035#define SERVO1_TIM_FN CH
2036#define SERVO1_TIM_CH 3
2037#define SERVO1_TIM_AF 1
2038#define SERVO5_TIM 2
2039#define SERVO5_TIM_FN CH
2040#define SERVO5_TIM_CH 1
2041#define SERVO5_TIM_AF 1
2042#define SERVO0_TIM 3
2043#define SERVO0_TIM_FN CH
2044#define SERVO0_TIM_CH 3
2045#define SERVO0_TIM_AF 2
2046#define SERVO6_TIM 3
2047#define SERVO6_TIM_FN CH
2048#define SERVO6_TIM_CH 4
2049#define SERVO6_TIM_AF 2
2050#define SERVO4_TIM 2
2051#define SERVO4_TIM_FN CH
2052#define SERVO4_TIM_CH 2
2053#define SERVO4_TIM_AF 1
2054#define SERVO3_TIM 3
2055#define SERVO3_TIM_FN CH
2056#define SERVO3_TIM_CH 1
2057#define SERVO3_TIM_AF 2
2058#define SERVO2_TIM 3
2059#define SERVO2_TIM_FN CH
2060#define SERVO2_TIM_CH 2
2061#define SERVO2_TIM_AF 2
2062
2063#define BOARD_GROUP_DECLFOREACH(line, group) \
2064 static const ioline_t group ## _ARRAY[] = {group}; \
2065 for (ioline_t i=0, line = group ## _ARRAY[i]; (i < group ## _SIZE) && (line = group ## _ARRAY[i]); i++)
2066
2067#define BOARD_GROUP_FOREACH(line, group) \
2068 for (ioline_t i=0, line = group ## _ARRAY[i]; (i < group ## _SIZE) && (line = group ## _ARRAY[i]); i++)
2069
2070
2071#define BOARD_GROUP_DECLFOR(array, index, group) \
2072 static const ioline_t group ## _ARRAY[] = {group}; \
2073 for (ioline_t index=0, *array = (ioline_t *) group ## _ARRAY; index < group ## _SIZE; index++)
2074
2075#define BOARD_GROUP_FOR(array, index, group) \
2076 for (ioline_t index=0, *array = (ioline_t *) group ## _ARRAY; index < group ## _SIZE; index++)
2077
2078#define ENERGY_SAVE_INPUT \
2079 LINE_SERVO1, \
2080 LINE_SERVO5, \
2081 LINE_SERVO0, \
2082 LINE_SERVO6, \
2083 LINE_SERVO4, \
2084 LINE_SERVO3, \
2085 LINE_SERVO2, \
2086 LINE_SPI1_CS, \
2087 LINE_AUX4, \
2088 LINE_LED1, \
2089 LINE_LED3, \
2090 LINE_LED4, \
2091 LINE_AUX3, \
2092 LINE_AUX2, \
2093 LINE_LED2
2094#define ENERGY_SAVE_INPUT_SIZE 15
2095
2096#if !defined(_FROM_ASM_)
2097#ifdef __cplusplus
2098extern "C" {
2099#endif
2100 void boardInit(void);
2101#ifdef __cplusplus
2102}
2103#endif
2104#endif /* _FROM_ASM_ */
2105
void boardInit(void)
Board-specific initialization code.
Definition board.c:317