/
board.h
1689 lines (1576 loc) · 69.4 KB
/
board.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#pragma once
/*
* Board identifier.
*/
#define BOARD_PX4FMU
#define BOARD_NAME "Pixhawk PX4 FMU v5.0"
/*
* Board oscillators-related settings.
*/
#if !defined(STM32_LSECLK)
#define STM32_LSECLK 32768U
#endif
#define STM32_LSEDRV (3U << 3U)
#if !defined(STM32_HSECLK)
#define STM32_HSECLK 16000000U
#endif
/*
* Board voltages.
* Required for performance limits calculation.
*/
#define STM32_VDD 330U
/*
* MCU type as defined in the ST header.
*/
#define STM32F767xx
/*
* IO pins assignments.
*/
#define PA00_ADC1 0U
#define PA01_ADC2 1U
#define PA02_ADC3 2U
#define PA03_ADC4 3U
#define PA04_ADC5 4U
#define PA05_FMU_CAP1 5U
#define PA06_SPI1_MISO 6U
#define PA07_HEATER 7U
#define PA08_CAN3_RX 8U
#define PA09_USB_VBUS 9U
#define PA10_SERVO2 10U
#define PA11_USB_DM 11U
#define PA12_USB_DP 12U
#define PA13_SWDIO 13U
#define PA14_SWCLK 14U
#define PA15_CAN3_TX 15U
#define PB00_RSSI_IN 0U
#define PB01_LED1 1U
#define PB02 2U
#define PB03_FMU_CAP2 3U
#define PB04_DRDY1_ICM20689 4U
#define PB05_SPI6_MOSI 5U
#define PB06_USART1_TX 6U
#define PB07_USART1_RX 7U
#define PB08_I2C1_SCL 8U
#define PB09_I2C1_SDA 9U
#define PB10_SPI5_RESET 10U
#define PB11_FMU_CAP3 11U
#define PB12_CAN2_RX 12U
#define PB13_CAN2_TX 13U
#define PB14_DRDY2_BMI055_GYRO 14U
#define PB15_DRDY2_BMI055_ACC 15U
#define PC00_SCALED_V5 0U
#define PC01_SCALED_3V3_SENSORS 1U
#define PC02_HW_VER_SENSE 2U
#define PC03_HW_REV_SENSE 3U
#define PC04_ADC6 4U
#define PC05_DRDY4_ICM20602 5U
#define PC06_LED2 6U
#define PC07_LED3 7U
#define PC08_SDIO_D0 8U
#define PC09_SDIO_D1 9U
#define PC10_SDIO_D2 10U
#define PC11_SDIO_D3 11U
#define PC12_SDIO_CK 12U
#define PC13_DRDY5_BMI055_GYRO 13U
#define PC14_OSC32_IN 14U
#define PC15_OSC32_OUT 15U
#define PD00_UART4_RX 0U
#define PD01_UART4_TX 1U
#define PD02_SDIO_CMD 2U
#define PD03_UART2_CTS 3U
#define PD04_UART2_RTS 4U
#define PD05_UART2_TX 5U
#define PD06_UART2_RX 6U
#define PD07_SPI1_MOSI 7U
#define PD08_UART3_TX 8U
#define PD09_UART3_RX 9U
#define PD10_DRDY6_BMI055_ACC 10U
#define PD11_UART3_CTS 11U
#define PD12_UART3_RTS 12U
#define PD13_SERVO5 13U
#define PD14_SERVO6 14U
#define PD15_DRDY7_EXTERNAL1 15U
#define PE00_UART8_RX 0U
#define PE01_UART8_TX 1U
#define PE02_SPI4_SCK 2U
#define PE03_V3V3_SENSORS_EN 3U
#define PE04_V3V3_SPEKTRUM_EN 4U
#define PE05_BUZZER 5U
#define PE06_SPI4_MOSI 6U
#define PE07_DRDY8 7U
#define PE08_UART7_TX 8U
#define PE09_SERVO4 9U
#define PE10_SAFETY_SWITCH_IN 10U
#define PE11_SERVO3 11U
#define PE12_LED4 12U
#define PE13_SPI4_MISO 13U
#define PE14_SERVO1 14U
#define PE15_V5V_PERIPH_OC 15U
#define PF00_I2C2_SDA 0U
#define PF01_I2C2_SCL 1U
#define PF02_SPI_SLAVE0 2U
#define PF03_SPI_SLAVE1 3U
#define PF04_SPI_SLAVE2 4U
#define PF05_SPI_SLAVE3 5U
#define PF06_UART7_RX 6U
#define PF07_SPI5_SCK 7U
#define PF08_SPI5_MISO 8U
#define PF09_SPI5_MOSI 9U
#define PF10_SPI_SLAVE4 10U
#define PF11_SPI_SLAVE5 11U
#define PF12_V5V_HIPOWER_EN 12U
#define PF13_V5V_HIPOWER_OC 13U
#define PF14_I2C4_SCL 14U
#define PF15_I2C4_SDA 15U
#define PG00_HW_VER_DRIVE 0U
#define PG01_POWER_IN_A 1U
#define PG02_POWER_IN_B 2U
#define PG03_POWER_IN_C 3U
#define PG04_V5V_PERIPH_EN 4U
#define PG05_V5V_RC_EN 5U
#define PG06_V5V_WIFI_EN 6U
#define PG07_V3V3_SD_CARD_EN 7U
#define PG08_USART6_RTS 8U
#define PG09_USART6_RX 9U
#define PG10_SPI_SLAVE6 10U
#define PG11_SPI1_SCK 11U
#define PG12_SPI6_MISO 12U
#define PG13_SPI6_SCK 13U
#define PG14_USART6_TX 14U
#define PG15_USART6_CTS 15U
#define PH00_OSC_IN 0U
#define PH01_OSC_OUT 1U
#define PH02_CAN1_SILENT_S0 2U
#define PH03_CAN2_SILENT_S1 3U
#define PH04_CAN3_SILENT_S2 4U
#define PH05_SPI_SLAVE7 5U
#define PH06_SERVO7 6U
#define PH07_I2C3_SCL 7U
#define PH08_I2C3_SDA 8U
#define PH09_SERVO8 9U
#define PH10_LED5 10U
#define PH11_LED6 11U
#define PH12_LED7 12U
#define PH13_CAN1_TX 13U
#define PH14_HW_REV_DRIVE 14U
#define PH15_SPI5_SYNC 15U
#define PI00_ARMED 0U
#define PI01_SPI2_SCK 1U
#define PI02_SPI2_MISO 2U
#define PI03_SPI2_MOSI 3U
#define PI04_SPI_SLAVE8 4U
#define PI05_RC_INPUT 5U
#define PI06_SPI_SLAVE9 6U
#define PI07_SPI_SLAVE10 7U
#define PI08_SPI_SLAVE11 8U
#define PI09_CAN1_RX 9U
#define PI10_SPI_SLAVE12 10U
#define PI11_SPI_SLAVE13 11U
#define PI12 12U
#define PI13 13U
#define PI14 14U
#define PI15 15U
#define PJ00 0U
#define PJ01 1U
#define PJ02 2U
#define PJ03 3U
#define PJ04 4U
#define PJ05 5U
#define PJ06 6U
#define PJ07 7U
#define PJ08 8U
#define PJ09 9U
#define PJ10 10U
#define PJ11 11U
#define PJ12 12U
#define PJ13 13U
#define PJ14 14U
#define PJ15 15U
#define PK00 0U
#define PK01 1U
#define PK02 2U
#define PK03 3U
#define PK04 4U
#define PK05 5U
#define PK06 6U
#define PK07 7U
#define PK08 8U
#define PK09 9U
#define PK10 10U
#define PK11 11U
#define PK12 12U
#define PK13 13U
#define PK14 14U
#define PK15 15U
/*
* IO lines assignments.
*/
#define LINE_ADC1 PAL_LINE(GPIOA, 0U)
#define LINE_ADC2 PAL_LINE(GPIOA, 1U)
#define LINE_ADC3 PAL_LINE(GPIOA, 2U)
#define LINE_ADC4 PAL_LINE(GPIOA, 3U)
#define LINE_ADC5 PAL_LINE(GPIOA, 4U)
#define LINE_FMU_CAP1 PAL_LINE(GPIOA, 5U)
#define LINE_SPI1_MISO PAL_LINE(GPIOA, 6U)
#define LINE_HEATER PAL_LINE(GPIOA, 7U)
#define LINE_CAN3_RX PAL_LINE(GPIOA, 8U)
#define LINE_USB_VBUS PAL_LINE(GPIOA, 9U)
#define LINE_SERVO2 PAL_LINE(GPIOA, 10U)
#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
#define LINE_CAN3_TX PAL_LINE(GPIOA, 15U)
#define LINE_RSSI_IN PAL_LINE(GPIOB, 0U)
#define LINE_LED1 PAL_LINE(GPIOB, 1U)
#define LINE_FMU_CAP2 PAL_LINE(GPIOB, 3U)
#define LINE_DRDY1_ICM20689 PAL_LINE(GPIOB, 4U)
#define LINE_SPI6_MOSI PAL_LINE(GPIOB, 5U)
#define LINE_USART1_TX PAL_LINE(GPIOB, 6U)
#define LINE_USART1_RX PAL_LINE(GPIOB, 7U)
#define LINE_I2C1_SCL PAL_LINE(GPIOB, 8U)
#define LINE_I2C1_SDA PAL_LINE(GPIOB, 9U)
#define LINE_SPI5_RESET PAL_LINE(GPIOB, 10U)
#define LINE_FMU_CAP3 PAL_LINE(GPIOB, 11U)
#define LINE_CAN2_RX PAL_LINE(GPIOB, 12U)
#define LINE_CAN2_TX PAL_LINE(GPIOB, 13U)
#define LINE_DRDY2_BMI055_GYRO PAL_LINE(GPIOB, 14U)
#define LINE_DRDY2_BMI055_ACC PAL_LINE(GPIOB, 15U)
#define LINE_SCALED_V5 PAL_LINE(GPIOC, 0U)
#define LINE_SCALED_3V3_SENSORS PAL_LINE(GPIOC, 1U)
#define LINE_HW_VER_SENSE PAL_LINE(GPIOC, 2U)
#define LINE_HW_REV_SENSE PAL_LINE(GPIOC, 3U)
#define LINE_ADC6 PAL_LINE(GPIOC, 4U)
#define LINE_DRDY4_ICM20602 PAL_LINE(GPIOC, 5U)
#define LINE_LED2 PAL_LINE(GPIOC, 6U)
#define LINE_LED3 PAL_LINE(GPIOC, 7U)
#define LINE_SDIO_D0 PAL_LINE(GPIOC, 8U)
#define LINE_SDIO_D1 PAL_LINE(GPIOC, 9U)
#define LINE_SDIO_D2 PAL_LINE(GPIOC, 10U)
#define LINE_SDIO_D3 PAL_LINE(GPIOC, 11U)
#define LINE_SDIO_CK PAL_LINE(GPIOC, 12U)
#define LINE_DRDY5_BMI055_GYRO PAL_LINE(GPIOC, 13U)
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
#define LINE_UART4_RX PAL_LINE(GPIOD, 0U)
#define LINE_UART4_TX PAL_LINE(GPIOD, 1U)
#define LINE_SDIO_CMD PAL_LINE(GPIOD, 2U)
#define LINE_UART2_CTS PAL_LINE(GPIOD, 3U)
#define LINE_UART2_RTS PAL_LINE(GPIOD, 4U)
#define LINE_UART2_TX PAL_LINE(GPIOD, 5U)
#define LINE_UART2_RX PAL_LINE(GPIOD, 6U)
#define LINE_SPI1_MOSI PAL_LINE(GPIOD, 7U)
#define LINE_UART3_TX PAL_LINE(GPIOD, 8U)
#define LINE_UART3_RX PAL_LINE(GPIOD, 9U)
#define LINE_DRDY6_BMI055_ACC PAL_LINE(GPIOD, 10U)
#define LINE_UART3_CTS PAL_LINE(GPIOD, 11U)
#define LINE_UART3_RTS PAL_LINE(GPIOD, 12U)
#define LINE_SERVO5 PAL_LINE(GPIOD, 13U)
#define LINE_SERVO6 PAL_LINE(GPIOD, 14U)
#define LINE_DRDY7_EXTERNAL1 PAL_LINE(GPIOD, 15U)
#define LINE_UART8_RX PAL_LINE(GPIOE, 0U)
#define LINE_UART8_TX PAL_LINE(GPIOE, 1U)
#define LINE_SPI4_SCK PAL_LINE(GPIOE, 2U)
#define LINE_V3V3_SENSORS_EN PAL_LINE(GPIOE, 3U)
#define LINE_V3V3_SPEKTRUM_EN PAL_LINE(GPIOE, 4U)
#define LINE_BUZZER PAL_LINE(GPIOE, 5U)
#define LINE_SPI4_MOSI PAL_LINE(GPIOE, 6U)
#define LINE_DRDY8 PAL_LINE(GPIOE, 7U)
#define LINE_UART7_TX PAL_LINE(GPIOE, 8U)
#define LINE_SERVO4 PAL_LINE(GPIOE, 9U)
#define LINE_SAFETY_SWITCH_IN PAL_LINE(GPIOE, 10U)
#define LINE_SERVO3 PAL_LINE(GPIOE, 11U)
#define LINE_LED4 PAL_LINE(GPIOE, 12U)
#define LINE_SPI4_MISO PAL_LINE(GPIOE, 13U)
#define LINE_SERVO1 PAL_LINE(GPIOE, 14U)
#define LINE_V5V_PERIPH_OC PAL_LINE(GPIOE, 15U)
#define LINE_I2C2_SDA PAL_LINE(GPIOF, 0U)
#define LINE_I2C2_SCL PAL_LINE(GPIOF, 1U)
#define LINE_SPI_SLAVE0 PAL_LINE(GPIOF, 2U)
#define LINE_SPI_SLAVE1 PAL_LINE(GPIOF, 3U)
#define LINE_SPI_SLAVE2 PAL_LINE(GPIOF, 4U)
#define LINE_SPI_SLAVE3 PAL_LINE(GPIOF, 5U)
#define LINE_UART7_RX PAL_LINE(GPIOF, 6U)
#define LINE_SPI5_SCK PAL_LINE(GPIOF, 7U)
#define LINE_SPI5_MISO PAL_LINE(GPIOF, 8U)
#define LINE_SPI5_MOSI PAL_LINE(GPIOF, 9U)
#define LINE_SPI_SLAVE4 PAL_LINE(GPIOF, 10U)
#define LINE_SPI_SLAVE5 PAL_LINE(GPIOF, 11U)
#define LINE_V5V_HIPOWER_EN PAL_LINE(GPIOF, 12U)
#define LINE_V5V_HIPOWER_OC PAL_LINE(GPIOF, 13U)
#define LINE_I2C4_SCL PAL_LINE(GPIOF, 14U)
#define LINE_I2C4_SDA PAL_LINE(GPIOF, 15U)
#define LINE_HW_VER_DRIVE PAL_LINE(GPIOG, 0U)
#define LINE_POWER_IN_A PAL_LINE(GPIOG, 1U)
#define LINE_POWER_IN_B PAL_LINE(GPIOG, 2U)
#define LINE_POWER_IN_C PAL_LINE(GPIOG, 3U)
#define LINE_V5V_PERIPH_EN PAL_LINE(GPIOG, 4U)
#define LINE_V5V_RC_EN PAL_LINE(GPIOG, 5U)
#define LINE_V5V_WIFI_EN PAL_LINE(GPIOG, 6U)
#define LINE_V3V3_SD_CARD_EN PAL_LINE(GPIOG, 7U)
#define LINE_USART6_RTS PAL_LINE(GPIOG, 8U)
#define LINE_USART6_RX PAL_LINE(GPIOG, 9U)
#define LINE_SPI_SLAVE6 PAL_LINE(GPIOG, 10U)
#define LINE_SPI1_SCK PAL_LINE(GPIOG, 11U)
#define LINE_SPI6_MISO PAL_LINE(GPIOG, 12U)
#define LINE_SPI6_SCK PAL_LINE(GPIOG, 13U)
#define LINE_USART6_TX PAL_LINE(GPIOG, 14U)
#define LINE_USART6_CTS PAL_LINE(GPIOG, 15U)
#define LINE_OSC_IN PAL_LINE(GPIOH, 0U)
#define LINE_OSC_OUT PAL_LINE(GPIOH, 1U)
#define LINE_CAN1_SILENT_S0 PAL_LINE(GPIOH, 2U)
#define LINE_CAN2_SILENT_S1 PAL_LINE(GPIOH, 3U)
#define LINE_CAN3_SILENT_S2 PAL_LINE(GPIOH, 4U)
#define LINE_SPI_SLAVE7 PAL_LINE(GPIOH, 5U)
#define LINE_SERVO7 PAL_LINE(GPIOH, 6U)
#define LINE_I2C3_SCL PAL_LINE(GPIOH, 7U)
#define LINE_I2C3_SDA PAL_LINE(GPIOH, 8U)
#define LINE_SERVO8 PAL_LINE(GPIOH, 9U)
#define LINE_LED5 PAL_LINE(GPIOH, 10U)
#define LINE_LED6 PAL_LINE(GPIOH, 11U)
#define LINE_LED7 PAL_LINE(GPIOH, 12U)
#define LINE_CAN1_TX PAL_LINE(GPIOH, 13U)
#define LINE_HW_REV_DRIVE PAL_LINE(GPIOH, 14U)
#define LINE_SPI5_SYNC PAL_LINE(GPIOH, 15U)
#define LINE_ARMED PAL_LINE(GPIOI, 0U)
#define LINE_SPI2_SCK PAL_LINE(GPIOI, 1U)
#define LINE_SPI2_MISO PAL_LINE(GPIOI, 2U)
#define LINE_SPI2_MOSI PAL_LINE(GPIOI, 3U)
#define LINE_SPI_SLAVE8 PAL_LINE(GPIOI, 4U)
#define LINE_RC_INPUT PAL_LINE(GPIOI, 5U)
#define LINE_SPI_SLAVE9 PAL_LINE(GPIOI, 6U)
#define LINE_SPI_SLAVE10 PAL_LINE(GPIOI, 7U)
#define LINE_SPI_SLAVE11 PAL_LINE(GPIOI, 8U)
#define LINE_CAN1_RX PAL_LINE(GPIOI, 9U)
#define LINE_SPI_SLAVE12 PAL_LINE(GPIOI, 10U)
#define LINE_SPI_SLAVE13 PAL_LINE(GPIOI, 11U)
/*
* I/O ports initial setup, this configuration is established soon after reset
* in the initialization code.
* Please refer to the STM32 Reference Manual for details.
*/
#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
#define PIN_ODR_LEVEL_LOW(n) (0U << (n))
#define PIN_ODR_LEVEL_HIGH(n) (1U << (n))
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
#define PIN_OSPEED_SPEED_VERYLOW(n) (0U << ((n) * 2U))
#define PIN_OSPEED_SPEED_LOW(n) (1U << ((n) * 2U))
#define PIN_OSPEED_SPEED_MEDIUM(n) (2U << ((n) * 2U))
#define PIN_OSPEED_SPEED_HIGH(n) (3U << ((n) * 2U))
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
#define VAL_GPIOA_MODER (PIN_MODE_ANALOG(PA00_ADC1) | \
PIN_MODE_ANALOG(PA01_ADC2) | \
PIN_MODE_ANALOG(PA02_ADC3) | \
PIN_MODE_ANALOG(PA03_ADC4) | \
PIN_MODE_ANALOG(PA04_ADC5) | \
PIN_MODE_INPUT(PA05_FMU_CAP1) | \
PIN_MODE_ALTERNATE(PA06_SPI1_MISO) | \
PIN_MODE_INPUT(PA07_HEATER) | \
PIN_MODE_ALTERNATE(PA08_CAN3_RX) | \
PIN_MODE_INPUT(PA09_USB_VBUS) | \
PIN_MODE_ALTERNATE(PA10_SERVO2) | \
PIN_MODE_ALTERNATE(PA11_USB_DM) | \
PIN_MODE_ALTERNATE(PA12_USB_DP) | \
PIN_MODE_ALTERNATE(PA13_SWDIO) | \
PIN_MODE_ALTERNATE(PA14_SWCLK) | \
PIN_MODE_ALTERNATE(PA15_CAN3_TX))
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(PA00_ADC1) | \
PIN_OTYPE_PUSHPULL(PA01_ADC2) | \
PIN_OTYPE_PUSHPULL(PA02_ADC3) | \
PIN_OTYPE_PUSHPULL(PA03_ADC4) | \
PIN_OTYPE_PUSHPULL(PA04_ADC5) | \
PIN_OTYPE_OPENDRAIN(PA05_FMU_CAP1) | \
PIN_OTYPE_PUSHPULL(PA06_SPI1_MISO) | \
PIN_OTYPE_OPENDRAIN(PA07_HEATER) | \
PIN_OTYPE_PUSHPULL(PA08_CAN3_RX) | \
PIN_OTYPE_OPENDRAIN(PA09_USB_VBUS) | \
PIN_OTYPE_PUSHPULL(PA10_SERVO2) | \
PIN_OTYPE_PUSHPULL(PA11_USB_DM) | \
PIN_OTYPE_PUSHPULL(PA12_USB_DP) | \
PIN_OTYPE_PUSHPULL(PA13_SWDIO) | \
PIN_OTYPE_PUSHPULL(PA14_SWCLK) | \
PIN_OTYPE_PUSHPULL(PA15_CAN3_TX))
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PA00_ADC1) | \
PIN_OSPEED_SPEED_VERYLOW(PA01_ADC2) | \
PIN_OSPEED_SPEED_VERYLOW(PA02_ADC3) | \
PIN_OSPEED_SPEED_VERYLOW(PA03_ADC4) | \
PIN_OSPEED_SPEED_VERYLOW(PA04_ADC5) | \
PIN_OSPEED_SPEED_VERYLOW(PA05_FMU_CAP1) | \
PIN_OSPEED_SPEED_HIGH(PA06_SPI1_MISO) | \
PIN_OSPEED_SPEED_VERYLOW(PA07_HEATER) | \
PIN_OSPEED_SPEED_HIGH(PA08_CAN3_RX) | \
PIN_OSPEED_SPEED_VERYLOW(PA09_USB_VBUS) | \
PIN_OSPEED_SPEED_HIGH(PA10_SERVO2) | \
PIN_OSPEED_SPEED_HIGH(PA11_USB_DM) | \
PIN_OSPEED_SPEED_HIGH(PA12_USB_DP) | \
PIN_OSPEED_SPEED_HIGH(PA13_SWDIO) | \
PIN_OSPEED_SPEED_HIGH(PA14_SWCLK) | \
PIN_OSPEED_SPEED_HIGH(PA15_CAN3_TX))
#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(PA00_ADC1) | \
PIN_PUPDR_FLOATING(PA01_ADC2) | \
PIN_PUPDR_FLOATING(PA02_ADC3) | \
PIN_PUPDR_FLOATING(PA03_ADC4) | \
PIN_PUPDR_FLOATING(PA04_ADC5) | \
PIN_PUPDR_PULLDOWN(PA05_FMU_CAP1) | \
PIN_PUPDR_FLOATING(PA06_SPI1_MISO) | \
PIN_PUPDR_PULLDOWN(PA07_HEATER) | \
PIN_PUPDR_FLOATING(PA08_CAN3_RX) | \
PIN_PUPDR_PULLDOWN(PA09_USB_VBUS) | \
PIN_PUPDR_FLOATING(PA10_SERVO2) | \
PIN_PUPDR_FLOATING(PA11_USB_DM) | \
PIN_PUPDR_FLOATING(PA12_USB_DP) | \
PIN_PUPDR_FLOATING(PA13_SWDIO) | \
PIN_PUPDR_FLOATING(PA14_SWCLK) | \
PIN_PUPDR_FLOATING(PA15_CAN3_TX))
#define VAL_GPIOA_ODR (PIN_ODR_LEVEL_LOW(PA00_ADC1) | \
PIN_ODR_LEVEL_LOW(PA01_ADC2) | \
PIN_ODR_LEVEL_LOW(PA02_ADC3) | \
PIN_ODR_LEVEL_LOW(PA03_ADC4) | \
PIN_ODR_LEVEL_LOW(PA04_ADC5) | \
PIN_ODR_LEVEL_HIGH(PA05_FMU_CAP1) | \
PIN_ODR_LEVEL_HIGH(PA06_SPI1_MISO) | \
PIN_ODR_LEVEL_HIGH(PA07_HEATER) | \
PIN_ODR_LEVEL_HIGH(PA08_CAN3_RX) | \
PIN_ODR_LEVEL_LOW(PA09_USB_VBUS) | \
PIN_ODR_LEVEL_LOW(PA10_SERVO2) | \
PIN_ODR_LEVEL_HIGH(PA11_USB_DM) | \
PIN_ODR_LEVEL_HIGH(PA12_USB_DP) | \
PIN_ODR_LEVEL_HIGH(PA13_SWDIO) | \
PIN_ODR_LEVEL_HIGH(PA14_SWCLK) | \
PIN_ODR_LEVEL_HIGH(PA15_CAN3_TX))
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(PA00_ADC1, 0) | \
PIN_AFIO_AF(PA01_ADC2, 0) | \
PIN_AFIO_AF(PA02_ADC3, 0) | \
PIN_AFIO_AF(PA03_ADC4, 0) | \
PIN_AFIO_AF(PA04_ADC5, 0) | \
PIN_AFIO_AF(PA05_FMU_CAP1, 0) | \
PIN_AFIO_AF(PA06_SPI1_MISO, 5) | \
PIN_AFIO_AF(PA07_HEATER, 0))
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(PA08_CAN3_RX, 11) | \
PIN_AFIO_AF(PA09_USB_VBUS, 0) | \
PIN_AFIO_AF(PA10_SERVO2, 1) | \
PIN_AFIO_AF(PA11_USB_DM, 10) | \
PIN_AFIO_AF(PA12_USB_DP, 10) | \
PIN_AFIO_AF(PA13_SWDIO, 0) | \
PIN_AFIO_AF(PA14_SWCLK, 0) | \
PIN_AFIO_AF(PA15_CAN3_TX, 11))
#define VAL_GPIOB_MODER (PIN_MODE_ANALOG(PB00_RSSI_IN) | \
PIN_MODE_OUTPUT(PB01_LED1) | \
PIN_MODE_INPUT(PB02) | \
PIN_MODE_INPUT(PB03_FMU_CAP2) | \
PIN_MODE_INPUT(PB04_DRDY1_ICM20689) | \
PIN_MODE_ALTERNATE(PB05_SPI6_MOSI) | \
PIN_MODE_ALTERNATE(PB06_USART1_TX) | \
PIN_MODE_ALTERNATE(PB07_USART1_RX) | \
PIN_MODE_ALTERNATE(PB08_I2C1_SCL) | \
PIN_MODE_ALTERNATE(PB09_I2C1_SDA) | \
PIN_MODE_INPUT(PB10_SPI5_RESET) | \
PIN_MODE_INPUT(PB11_FMU_CAP3) | \
PIN_MODE_ALTERNATE(PB12_CAN2_RX) | \
PIN_MODE_ALTERNATE(PB13_CAN2_TX) | \
PIN_MODE_INPUT(PB14_DRDY2_BMI055_GYRO) | \
PIN_MODE_INPUT(PB15_DRDY2_BMI055_ACC))
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(PB00_RSSI_IN) | \
PIN_OTYPE_PUSHPULL(PB01_LED1) | \
PIN_OTYPE_PUSHPULL(PB02) | \
PIN_OTYPE_OPENDRAIN(PB03_FMU_CAP2) | \
PIN_OTYPE_OPENDRAIN(PB04_DRDY1_ICM20689) | \
PIN_OTYPE_PUSHPULL(PB05_SPI6_MOSI) | \
PIN_OTYPE_PUSHPULL(PB06_USART1_TX) | \
PIN_OTYPE_PUSHPULL(PB07_USART1_RX) | \
PIN_OTYPE_OPENDRAIN(PB08_I2C1_SCL) | \
PIN_OTYPE_OPENDRAIN(PB09_I2C1_SDA) | \
PIN_OTYPE_OPENDRAIN(PB10_SPI5_RESET) | \
PIN_OTYPE_OPENDRAIN(PB11_FMU_CAP3) | \
PIN_OTYPE_PUSHPULL(PB12_CAN2_RX) | \
PIN_OTYPE_PUSHPULL(PB13_CAN2_TX) | \
PIN_OTYPE_OPENDRAIN(PB14_DRDY2_BMI055_GYRO) | \
PIN_OTYPE_OPENDRAIN(PB15_DRDY2_BMI055_ACC))
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PB00_RSSI_IN) | \
PIN_OSPEED_SPEED_VERYLOW(PB01_LED1) | \
PIN_OSPEED_SPEED_VERYLOW(PB02) | \
PIN_OSPEED_SPEED_VERYLOW(PB03_FMU_CAP2) | \
PIN_OSPEED_SPEED_VERYLOW(PB04_DRDY1_ICM20689) | \
PIN_OSPEED_SPEED_HIGH(PB05_SPI6_MOSI) | \
PIN_OSPEED_SPEED_HIGH(PB06_USART1_TX) | \
PIN_OSPEED_SPEED_HIGH(PB07_USART1_RX) | \
PIN_OSPEED_SPEED_HIGH(PB08_I2C1_SCL) | \
PIN_OSPEED_SPEED_HIGH(PB09_I2C1_SDA) | \
PIN_OSPEED_SPEED_VERYLOW(PB10_SPI5_RESET) | \
PIN_OSPEED_SPEED_VERYLOW(PB11_FMU_CAP3) | \
PIN_OSPEED_SPEED_HIGH(PB12_CAN2_RX) | \
PIN_OSPEED_SPEED_HIGH(PB13_CAN2_TX) | \
PIN_OSPEED_SPEED_VERYLOW(PB14_DRDY2_BMI055_GYRO) | \
PIN_OSPEED_SPEED_VERYLOW(PB15_DRDY2_BMI055_ACC))
#define VAL_GPIOB_PUPDR (PIN_PUPDR_FLOATING(PB00_RSSI_IN) | \
PIN_PUPDR_FLOATING(PB01_LED1) | \
PIN_PUPDR_PULLDOWN(PB02) | \
PIN_PUPDR_PULLDOWN(PB03_FMU_CAP2) | \
PIN_PUPDR_PULLDOWN(PB04_DRDY1_ICM20689) | \
PIN_PUPDR_FLOATING(PB05_SPI6_MOSI) | \
PIN_PUPDR_FLOATING(PB06_USART1_TX) | \
PIN_PUPDR_FLOATING(PB07_USART1_RX) | \
PIN_PUPDR_PULLUP(PB08_I2C1_SCL) | \
PIN_PUPDR_PULLUP(PB09_I2C1_SDA) | \
PIN_PUPDR_PULLDOWN(PB10_SPI5_RESET) | \
PIN_PUPDR_PULLDOWN(PB11_FMU_CAP3) | \
PIN_PUPDR_FLOATING(PB12_CAN2_RX) | \
PIN_PUPDR_FLOATING(PB13_CAN2_TX) | \
PIN_PUPDR_PULLDOWN(PB14_DRDY2_BMI055_GYRO) | \
PIN_PUPDR_PULLDOWN(PB15_DRDY2_BMI055_ACC))
#define VAL_GPIOB_ODR (PIN_ODR_LEVEL_LOW(PB00_RSSI_IN) | \
PIN_ODR_LEVEL_LOW(PB01_LED1) | \
PIN_ODR_LEVEL_LOW(PB02) | \
PIN_ODR_LEVEL_HIGH(PB03_FMU_CAP2) | \
PIN_ODR_LEVEL_HIGH(PB04_DRDY1_ICM20689) | \
PIN_ODR_LEVEL_HIGH(PB05_SPI6_MOSI) | \
PIN_ODR_LEVEL_HIGH(PB06_USART1_TX) | \
PIN_ODR_LEVEL_HIGH(PB07_USART1_RX) | \
PIN_ODR_LEVEL_HIGH(PB08_I2C1_SCL) | \
PIN_ODR_LEVEL_HIGH(PB09_I2C1_SDA) | \
PIN_ODR_LEVEL_HIGH(PB10_SPI5_RESET) | \
PIN_ODR_LEVEL_HIGH(PB11_FMU_CAP3) | \
PIN_ODR_LEVEL_HIGH(PB12_CAN2_RX) | \
PIN_ODR_LEVEL_HIGH(PB13_CAN2_TX) | \
PIN_ODR_LEVEL_HIGH(PB14_DRDY2_BMI055_GYRO) | \
PIN_ODR_LEVEL_HIGH(PB15_DRDY2_BMI055_ACC))
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(PB00_RSSI_IN, 0) | \
PIN_AFIO_AF(PB01_LED1, 0) | \
PIN_AFIO_AF(PB02, 0) | \
PIN_AFIO_AF(PB03_FMU_CAP2, 0) | \
PIN_AFIO_AF(PB04_DRDY1_ICM20689, 0) | \
PIN_AFIO_AF(PB05_SPI6_MOSI, 8) | \
PIN_AFIO_AF(PB06_USART1_TX, 7) | \
PIN_AFIO_AF(PB07_USART1_RX, 7))
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(PB08_I2C1_SCL, 4) | \
PIN_AFIO_AF(PB09_I2C1_SDA, 4) | \
PIN_AFIO_AF(PB10_SPI5_RESET, 0) | \
PIN_AFIO_AF(PB11_FMU_CAP3, 0) | \
PIN_AFIO_AF(PB12_CAN2_RX, 9) | \
PIN_AFIO_AF(PB13_CAN2_TX, 9) | \
PIN_AFIO_AF(PB14_DRDY2_BMI055_GYRO, 0) | \
PIN_AFIO_AF(PB15_DRDY2_BMI055_ACC, 0))
#define VAL_GPIOC_MODER (PIN_MODE_ANALOG(PC00_SCALED_V5) | \
PIN_MODE_ANALOG(PC01_SCALED_3V3_SENSORS) | \
PIN_MODE_ANALOG(PC02_HW_VER_SENSE) | \
PIN_MODE_ANALOG(PC03_HW_REV_SENSE) | \
PIN_MODE_ANALOG(PC04_ADC6) | \
PIN_MODE_INPUT(PC05_DRDY4_ICM20602) | \
PIN_MODE_OUTPUT(PC06_LED2) | \
PIN_MODE_OUTPUT(PC07_LED3) | \
PIN_MODE_ALTERNATE(PC08_SDIO_D0) | \
PIN_MODE_ALTERNATE(PC09_SDIO_D1) | \
PIN_MODE_ALTERNATE(PC10_SDIO_D2) | \
PIN_MODE_ALTERNATE(PC11_SDIO_D3) | \
PIN_MODE_ALTERNATE(PC12_SDIO_CK) | \
PIN_MODE_INPUT(PC13_DRDY5_BMI055_GYRO) | \
PIN_MODE_ALTERNATE(PC14_OSC32_IN) | \
PIN_MODE_ALTERNATE(PC15_OSC32_OUT))
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(PC00_SCALED_V5) | \
PIN_OTYPE_PUSHPULL(PC01_SCALED_3V3_SENSORS) | \
PIN_OTYPE_PUSHPULL(PC02_HW_VER_SENSE) | \
PIN_OTYPE_PUSHPULL(PC03_HW_REV_SENSE) | \
PIN_OTYPE_PUSHPULL(PC04_ADC6) | \
PIN_OTYPE_OPENDRAIN(PC05_DRDY4_ICM20602) | \
PIN_OTYPE_PUSHPULL(PC06_LED2) | \
PIN_OTYPE_PUSHPULL(PC07_LED3) | \
PIN_OTYPE_PUSHPULL(PC08_SDIO_D0) | \
PIN_OTYPE_PUSHPULL(PC09_SDIO_D1) | \
PIN_OTYPE_PUSHPULL(PC10_SDIO_D2) | \
PIN_OTYPE_PUSHPULL(PC11_SDIO_D3) | \
PIN_OTYPE_PUSHPULL(PC12_SDIO_CK) | \
PIN_OTYPE_OPENDRAIN(PC13_DRDY5_BMI055_GYRO) | \
PIN_OTYPE_PUSHPULL(PC14_OSC32_IN) | \
PIN_OTYPE_PUSHPULL(PC15_OSC32_OUT))
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_SPEED_VERYLOW(PC00_SCALED_V5) | \
PIN_OSPEED_SPEED_VERYLOW(PC01_SCALED_3V3_SENSORS) | \
PIN_OSPEED_SPEED_VERYLOW(PC02_HW_VER_SENSE) | \
PIN_OSPEED_SPEED_VERYLOW(PC03_HW_REV_SENSE) | \
PIN_OSPEED_SPEED_VERYLOW(PC04_ADC6) | \
PIN_OSPEED_SPEED_VERYLOW(PC05_DRDY4_ICM20602) | \
PIN_OSPEED_SPEED_VERYLOW(PC06_LED2) | \
PIN_OSPEED_SPEED_VERYLOW(PC07_LED3) | \
PIN_OSPEED_SPEED_HIGH(PC08_SDIO_D0) | \
PIN_OSPEED_SPEED_HIGH(PC09_SDIO_D1) | \
PIN_OSPEED_SPEED_HIGH(PC10_SDIO_D2) | \
PIN_OSPEED_SPEED_HIGH(PC11_SDIO_D3) | \
PIN_OSPEED_SPEED_HIGH(PC12_SDIO_CK) | \
PIN_OSPEED_SPEED_VERYLOW(PC13_DRDY5_BMI055_GYRO) | \
PIN_OSPEED_SPEED_HIGH(PC14_OSC32_IN) | \
PIN_OSPEED_SPEED_HIGH(PC15_OSC32_OUT))
#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(PC00_SCALED_V5) | \
PIN_PUPDR_FLOATING(PC01_SCALED_3V3_SENSORS) | \
PIN_PUPDR_FLOATING(PC02_HW_VER_SENSE) | \
PIN_PUPDR_FLOATING(PC03_HW_REV_SENSE) | \
PIN_PUPDR_FLOATING(PC04_ADC6) | \
PIN_PUPDR_PULLDOWN(PC05_DRDY4_ICM20602) | \
PIN_PUPDR_FLOATING(PC06_LED2) | \
PIN_PUPDR_FLOATING(PC07_LED3) | \
PIN_PUPDR_PULLUP(PC08_SDIO_D0) | \
PIN_PUPDR_PULLUP(PC09_SDIO_D1) | \
PIN_PUPDR_PULLUP(PC10_SDIO_D2) | \
PIN_PUPDR_PULLUP(PC11_SDIO_D3) | \
PIN_PUPDR_PULLUP(PC12_SDIO_CK) | \
PIN_PUPDR_PULLDOWN(PC13_DRDY5_BMI055_GYRO) | \
PIN_PUPDR_FLOATING(PC14_OSC32_IN) | \
PIN_PUPDR_FLOATING(PC15_OSC32_OUT))
#define VAL_GPIOC_ODR (PIN_ODR_LEVEL_LOW(PC00_SCALED_V5) | \
PIN_ODR_LEVEL_LOW(PC01_SCALED_3V3_SENSORS) | \
PIN_ODR_LEVEL_LOW(PC02_HW_VER_SENSE) | \
PIN_ODR_LEVEL_LOW(PC03_HW_REV_SENSE) | \
PIN_ODR_LEVEL_LOW(PC04_ADC6) | \
PIN_ODR_LEVEL_HIGH(PC05_DRDY4_ICM20602) | \
PIN_ODR_LEVEL_LOW(PC06_LED2) | \
PIN_ODR_LEVEL_LOW(PC07_LED3) | \
PIN_ODR_LEVEL_HIGH(PC08_SDIO_D0) | \
PIN_ODR_LEVEL_HIGH(PC09_SDIO_D1) | \
PIN_ODR_LEVEL_HIGH(PC10_SDIO_D2) | \
PIN_ODR_LEVEL_HIGH(PC11_SDIO_D3) | \
PIN_ODR_LEVEL_HIGH(PC12_SDIO_CK) | \
PIN_ODR_LEVEL_HIGH(PC13_DRDY5_BMI055_GYRO) | \
PIN_ODR_LEVEL_HIGH(PC14_OSC32_IN) | \
PIN_ODR_LEVEL_HIGH(PC15_OSC32_OUT))
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(PC00_SCALED_V5, 0) | \
PIN_AFIO_AF(PC01_SCALED_3V3_SENSORS, 0) | \
PIN_AFIO_AF(PC02_HW_VER_SENSE, 0) | \
PIN_AFIO_AF(PC03_HW_REV_SENSE, 0) | \
PIN_AFIO_AF(PC04_ADC6, 0) | \
PIN_AFIO_AF(PC05_DRDY4_ICM20602, 0) | \
PIN_AFIO_AF(PC06_LED2, 0) | \
PIN_AFIO_AF(PC07_LED3, 0))
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(PC08_SDIO_D0, 12) | \
PIN_AFIO_AF(PC09_SDIO_D1, 12) | \
PIN_AFIO_AF(PC10_SDIO_D2, 12) | \
PIN_AFIO_AF(PC11_SDIO_D3, 12) | \
PIN_AFIO_AF(PC12_SDIO_CK, 12) | \
PIN_AFIO_AF(PC13_DRDY5_BMI055_GYRO, 0) | \
PIN_AFIO_AF(PC14_OSC32_IN, 0) | \
PIN_AFIO_AF(PC15_OSC32_OUT, 0))
#define VAL_GPIOD_MODER (PIN_MODE_ALTERNATE(PD00_UART4_RX) | \
PIN_MODE_ALTERNATE(PD01_UART4_TX) | \
PIN_MODE_ALTERNATE(PD02_SDIO_CMD) | \
PIN_MODE_INPUT(PD03_UART2_CTS) | \
PIN_MODE_INPUT(PD04_UART2_RTS) | \
PIN_MODE_ALTERNATE(PD05_UART2_TX) | \
PIN_MODE_ALTERNATE(PD06_UART2_RX) | \
PIN_MODE_ALTERNATE(PD07_SPI1_MOSI) | \
PIN_MODE_ALTERNATE(PD08_UART3_TX) | \
PIN_MODE_ALTERNATE(PD09_UART3_RX) | \
PIN_MODE_INPUT(PD10_DRDY6_BMI055_ACC) | \
PIN_MODE_INPUT(PD11_UART3_CTS) | \
PIN_MODE_INPUT(PD12_UART3_RTS) | \
PIN_MODE_ALTERNATE(PD13_SERVO5) | \
PIN_MODE_ALTERNATE(PD14_SERVO6) | \
PIN_MODE_INPUT(PD15_DRDY7_EXTERNAL1))
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(PD00_UART4_RX) | \
PIN_OTYPE_PUSHPULL(PD01_UART4_TX) | \
PIN_OTYPE_PUSHPULL(PD02_SDIO_CMD) | \
PIN_OTYPE_OPENDRAIN(PD03_UART2_CTS) | \
PIN_OTYPE_OPENDRAIN(PD04_UART2_RTS) | \
PIN_OTYPE_PUSHPULL(PD05_UART2_TX) | \
PIN_OTYPE_PUSHPULL(PD06_UART2_RX) | \
PIN_OTYPE_PUSHPULL(PD07_SPI1_MOSI) | \
PIN_OTYPE_PUSHPULL(PD08_UART3_TX) | \
PIN_OTYPE_PUSHPULL(PD09_UART3_RX) | \
PIN_OTYPE_OPENDRAIN(PD10_DRDY6_BMI055_ACC) | \
PIN_OTYPE_OPENDRAIN(PD11_UART3_CTS) | \
PIN_OTYPE_OPENDRAIN(PD12_UART3_RTS) | \
PIN_OTYPE_PUSHPULL(PD13_SERVO5) | \
PIN_OTYPE_PUSHPULL(PD14_SERVO6) | \
PIN_OTYPE_OPENDRAIN(PD15_DRDY7_EXTERNAL1))
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_SPEED_HIGH(PD00_UART4_RX) | \
PIN_OSPEED_SPEED_HIGH(PD01_UART4_TX) | \
PIN_OSPEED_SPEED_HIGH(PD02_SDIO_CMD) | \
PIN_OSPEED_SPEED_VERYLOW(PD03_UART2_CTS) | \
PIN_OSPEED_SPEED_VERYLOW(PD04_UART2_RTS) | \
PIN_OSPEED_SPEED_HIGH(PD05_UART2_TX) | \
PIN_OSPEED_SPEED_HIGH(PD06_UART2_RX) | \
PIN_OSPEED_SPEED_HIGH(PD07_SPI1_MOSI) | \
PIN_OSPEED_SPEED_HIGH(PD08_UART3_TX) | \
PIN_OSPEED_SPEED_HIGH(PD09_UART3_RX) | \
PIN_OSPEED_SPEED_VERYLOW(PD10_DRDY6_BMI055_ACC) | \
PIN_OSPEED_SPEED_VERYLOW(PD11_UART3_CTS) | \
PIN_OSPEED_SPEED_VERYLOW(PD12_UART3_RTS) | \
PIN_OSPEED_SPEED_HIGH(PD13_SERVO5) | \
PIN_OSPEED_SPEED_HIGH(PD14_SERVO6) | \
PIN_OSPEED_SPEED_VERYLOW(PD15_DRDY7_EXTERNAL1))
#define VAL_GPIOD_PUPDR (PIN_PUPDR_FLOATING(PD00_UART4_RX) | \
PIN_PUPDR_FLOATING(PD01_UART4_TX) | \
PIN_PUPDR_PULLUP(PD02_SDIO_CMD) | \
PIN_PUPDR_PULLDOWN(PD03_UART2_CTS) | \
PIN_PUPDR_PULLDOWN(PD04_UART2_RTS) | \
PIN_PUPDR_FLOATING(PD05_UART2_TX) | \
PIN_PUPDR_FLOATING(PD06_UART2_RX) | \
PIN_PUPDR_FLOATING(PD07_SPI1_MOSI) | \
PIN_PUPDR_FLOATING(PD08_UART3_TX) | \
PIN_PUPDR_FLOATING(PD09_UART3_RX) | \
PIN_PUPDR_PULLDOWN(PD10_DRDY6_BMI055_ACC) | \
PIN_PUPDR_PULLDOWN(PD11_UART3_CTS) | \
PIN_PUPDR_PULLDOWN(PD12_UART3_RTS) | \
PIN_PUPDR_FLOATING(PD13_SERVO5) | \
PIN_PUPDR_FLOATING(PD14_SERVO6) | \
PIN_PUPDR_PULLDOWN(PD15_DRDY7_EXTERNAL1))
#define VAL_GPIOD_ODR (PIN_ODR_LEVEL_HIGH(PD00_UART4_RX) | \
PIN_ODR_LEVEL_HIGH(PD01_UART4_TX) | \
PIN_ODR_LEVEL_HIGH(PD02_SDIO_CMD) | \
PIN_ODR_LEVEL_HIGH(PD03_UART2_CTS) | \
PIN_ODR_LEVEL_HIGH(PD04_UART2_RTS) | \
PIN_ODR_LEVEL_HIGH(PD05_UART2_TX) | \
PIN_ODR_LEVEL_HIGH(PD06_UART2_RX) | \
PIN_ODR_LEVEL_HIGH(PD07_SPI1_MOSI) | \
PIN_ODR_LEVEL_HIGH(PD08_UART3_TX) | \
PIN_ODR_LEVEL_HIGH(PD09_UART3_RX) | \
PIN_ODR_LEVEL_HIGH(PD10_DRDY6_BMI055_ACC) | \
PIN_ODR_LEVEL_HIGH(PD11_UART3_CTS) | \
PIN_ODR_LEVEL_HIGH(PD12_UART3_RTS) | \
PIN_ODR_LEVEL_LOW(PD13_SERVO5) | \
PIN_ODR_LEVEL_LOW(PD14_SERVO6) | \
PIN_ODR_LEVEL_HIGH(PD15_DRDY7_EXTERNAL1))
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(PD00_UART4_RX, 8) | \
PIN_AFIO_AF(PD01_UART4_TX, 8) | \
PIN_AFIO_AF(PD02_SDIO_CMD, 12) | \
PIN_AFIO_AF(PD03_UART2_CTS, 0) | \
PIN_AFIO_AF(PD04_UART2_RTS, 0) | \
PIN_AFIO_AF(PD05_UART2_TX, 7) | \
PIN_AFIO_AF(PD06_UART2_RX, 7) | \
PIN_AFIO_AF(PD07_SPI1_MOSI, 5))
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(PD08_UART3_TX, 7) | \
PIN_AFIO_AF(PD09_UART3_RX, 7) | \
PIN_AFIO_AF(PD10_DRDY6_BMI055_ACC, 0) | \
PIN_AFIO_AF(PD11_UART3_CTS, 0) | \
PIN_AFIO_AF(PD12_UART3_RTS, 0) | \
PIN_AFIO_AF(PD13_SERVO5, 2) | \
PIN_AFIO_AF(PD14_SERVO6, 2) | \
PIN_AFIO_AF(PD15_DRDY7_EXTERNAL1, 0))
#define VAL_GPIOE_MODER (PIN_MODE_ALTERNATE(PE00_UART8_RX) | \
PIN_MODE_ALTERNATE(PE01_UART8_TX) | \
PIN_MODE_ALTERNATE(PE02_SPI4_SCK) | \
PIN_MODE_OUTPUT(PE03_V3V3_SENSORS_EN) | \
PIN_MODE_OUTPUT(PE04_V3V3_SPEKTRUM_EN) | \
PIN_MODE_INPUT(PE05_BUZZER) | \
PIN_MODE_ALTERNATE(PE06_SPI4_MOSI) | \
PIN_MODE_INPUT(PE07_DRDY8) | \
PIN_MODE_ALTERNATE(PE08_UART7_TX) | \
PIN_MODE_ALTERNATE(PE09_SERVO4) | \
PIN_MODE_INPUT(PE10_SAFETY_SWITCH_IN) | \
PIN_MODE_ALTERNATE(PE11_SERVO3) | \
PIN_MODE_OUTPUT(PE12_LED4) | \
PIN_MODE_ALTERNATE(PE13_SPI4_MISO) | \
PIN_MODE_ALTERNATE(PE14_SERVO1) | \
PIN_MODE_INPUT(PE15_V5V_PERIPH_OC))
#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(PE00_UART8_RX) | \
PIN_OTYPE_PUSHPULL(PE01_UART8_TX) | \
PIN_OTYPE_PUSHPULL(PE02_SPI4_SCK) | \
PIN_OTYPE_PUSHPULL(PE03_V3V3_SENSORS_EN) | \
PIN_OTYPE_PUSHPULL(PE04_V3V3_SPEKTRUM_EN) | \
PIN_OTYPE_OPENDRAIN(PE05_BUZZER) | \
PIN_OTYPE_PUSHPULL(PE06_SPI4_MOSI) | \
PIN_OTYPE_OPENDRAIN(PE07_DRDY8) | \
PIN_OTYPE_PUSHPULL(PE08_UART7_TX) | \
PIN_OTYPE_PUSHPULL(PE09_SERVO4) | \
PIN_OTYPE_OPENDRAIN(PE10_SAFETY_SWITCH_IN) | \
PIN_OTYPE_PUSHPULL(PE11_SERVO3) | \
PIN_OTYPE_PUSHPULL(PE12_LED4) | \
PIN_OTYPE_PUSHPULL(PE13_SPI4_MISO) | \
PIN_OTYPE_PUSHPULL(PE14_SERVO1) | \
PIN_OTYPE_OPENDRAIN(PE15_V5V_PERIPH_OC))
#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_SPEED_HIGH(PE00_UART8_RX) | \
PIN_OSPEED_SPEED_HIGH(PE01_UART8_TX) | \
PIN_OSPEED_SPEED_HIGH(PE02_SPI4_SCK) | \
PIN_OSPEED_SPEED_VERYLOW(PE03_V3V3_SENSORS_EN) | \
PIN_OSPEED_SPEED_VERYLOW(PE04_V3V3_SPEKTRUM_EN) | \
PIN_OSPEED_SPEED_VERYLOW(PE05_BUZZER) | \
PIN_OSPEED_SPEED_HIGH(PE06_SPI4_MOSI) | \
PIN_OSPEED_SPEED_VERYLOW(PE07_DRDY8) | \
PIN_OSPEED_SPEED_HIGH(PE08_UART7_TX) | \
PIN_OSPEED_SPEED_HIGH(PE09_SERVO4) | \
PIN_OSPEED_SPEED_VERYLOW(PE10_SAFETY_SWITCH_IN) | \
PIN_OSPEED_SPEED_HIGH(PE11_SERVO3) | \
PIN_OSPEED_SPEED_VERYLOW(PE12_LED4) | \
PIN_OSPEED_SPEED_HIGH(PE13_SPI4_MISO) | \
PIN_OSPEED_SPEED_HIGH(PE14_SERVO1) | \
PIN_OSPEED_SPEED_VERYLOW(PE15_V5V_PERIPH_OC))
#define VAL_GPIOE_PUPDR (PIN_PUPDR_FLOATING(PE00_UART8_RX) | \
PIN_PUPDR_FLOATING(PE01_UART8_TX) | \
PIN_PUPDR_FLOATING(PE02_SPI4_SCK) | \
PIN_PUPDR_FLOATING(PE03_V3V3_SENSORS_EN) | \
PIN_PUPDR_FLOATING(PE04_V3V3_SPEKTRUM_EN) | \
PIN_PUPDR_PULLDOWN(PE05_BUZZER) | \
PIN_PUPDR_FLOATING(PE06_SPI4_MOSI) | \
PIN_PUPDR_PULLDOWN(PE07_DRDY8) | \
PIN_PUPDR_FLOATING(PE08_UART7_TX) | \
PIN_PUPDR_FLOATING(PE09_SERVO4) | \
PIN_PUPDR_PULLDOWN(PE10_SAFETY_SWITCH_IN) | \
PIN_PUPDR_FLOATING(PE11_SERVO3) | \
PIN_PUPDR_FLOATING(PE12_LED4) | \
PIN_PUPDR_FLOATING(PE13_SPI4_MISO) | \
PIN_PUPDR_FLOATING(PE14_SERVO1) | \
PIN_PUPDR_PULLDOWN(PE15_V5V_PERIPH_OC))
#define VAL_GPIOE_ODR (PIN_ODR_LEVEL_HIGH(PE00_UART8_RX) | \
PIN_ODR_LEVEL_HIGH(PE01_UART8_TX) | \
PIN_ODR_LEVEL_HIGH(PE02_SPI4_SCK) | \
PIN_ODR_LEVEL_HIGH(PE03_V3V3_SENSORS_EN) | \
PIN_ODR_LEVEL_HIGH(PE04_V3V3_SPEKTRUM_EN) | \
PIN_ODR_LEVEL_HIGH(PE05_BUZZER) | \
PIN_ODR_LEVEL_HIGH(PE06_SPI4_MOSI) | \
PIN_ODR_LEVEL_HIGH(PE07_DRDY8) | \
PIN_ODR_LEVEL_HIGH(PE08_UART7_TX) | \
PIN_ODR_LEVEL_LOW(PE09_SERVO4) | \
PIN_ODR_LEVEL_LOW(PE10_SAFETY_SWITCH_IN) | \
PIN_ODR_LEVEL_LOW(PE11_SERVO3) | \
PIN_ODR_LEVEL_LOW(PE12_LED4) | \
PIN_ODR_LEVEL_HIGH(PE13_SPI4_MISO) | \
PIN_ODR_LEVEL_LOW(PE14_SERVO1) | \
PIN_ODR_LEVEL_HIGH(PE15_V5V_PERIPH_OC))
#define VAL_GPIOE_AFRL (PIN_AFIO_AF(PE00_UART8_RX, 8) | \
PIN_AFIO_AF(PE01_UART8_TX, 8) | \
PIN_AFIO_AF(PE02_SPI4_SCK, 5) | \
PIN_AFIO_AF(PE03_V3V3_SENSORS_EN, 0) | \
PIN_AFIO_AF(PE04_V3V3_SPEKTRUM_EN, 0) | \
PIN_AFIO_AF(PE05_BUZZER, 0) | \
PIN_AFIO_AF(PE06_SPI4_MOSI, 5) | \
PIN_AFIO_AF(PE07_DRDY8, 0))
#define VAL_GPIOE_AFRH (PIN_AFIO_AF(PE08_UART7_TX, 8) | \
PIN_AFIO_AF(PE09_SERVO4, 1) | \
PIN_AFIO_AF(PE10_SAFETY_SWITCH_IN, 0) | \
PIN_AFIO_AF(PE11_SERVO3, 1) | \
PIN_AFIO_AF(PE12_LED4, 0) | \
PIN_AFIO_AF(PE13_SPI4_MISO, 5) | \
PIN_AFIO_AF(PE14_SERVO1, 1) | \
PIN_AFIO_AF(PE15_V5V_PERIPH_OC, 0))
#define VAL_GPIOF_MODER (PIN_MODE_ALTERNATE(PF00_I2C2_SDA) | \
PIN_MODE_ALTERNATE(PF01_I2C2_SCL) | \
PIN_MODE_OUTPUT(PF02_SPI_SLAVE0) | \
PIN_MODE_OUTPUT(PF03_SPI_SLAVE1) | \
PIN_MODE_OUTPUT(PF04_SPI_SLAVE2) | \
PIN_MODE_OUTPUT(PF05_SPI_SLAVE3) | \
PIN_MODE_ALTERNATE(PF06_UART7_RX) | \
PIN_MODE_ALTERNATE(PF07_SPI5_SCK) | \
PIN_MODE_ALTERNATE(PF08_SPI5_MISO) | \
PIN_MODE_ALTERNATE(PF09_SPI5_MOSI) | \
PIN_MODE_OUTPUT(PF10_SPI_SLAVE4) | \
PIN_MODE_OUTPUT(PF11_SPI_SLAVE5) | \
PIN_MODE_OUTPUT(PF12_V5V_HIPOWER_EN) | \
PIN_MODE_INPUT(PF13_V5V_HIPOWER_OC) | \
PIN_MODE_ALTERNATE(PF14_I2C4_SCL) | \
PIN_MODE_ALTERNATE(PF15_I2C4_SDA))
#define VAL_GPIOF_OTYPER (PIN_OTYPE_OPENDRAIN(PF00_I2C2_SDA) | \
PIN_OTYPE_OPENDRAIN(PF01_I2C2_SCL) | \
PIN_OTYPE_PUSHPULL(PF02_SPI_SLAVE0) | \
PIN_OTYPE_PUSHPULL(PF03_SPI_SLAVE1) | \
PIN_OTYPE_PUSHPULL(PF04_SPI_SLAVE2) | \
PIN_OTYPE_PUSHPULL(PF05_SPI_SLAVE3) | \
PIN_OTYPE_PUSHPULL(PF06_UART7_RX) | \
PIN_OTYPE_PUSHPULL(PF07_SPI5_SCK) | \
PIN_OTYPE_PUSHPULL(PF08_SPI5_MISO) | \
PIN_OTYPE_PUSHPULL(PF09_SPI5_MOSI) | \
PIN_OTYPE_PUSHPULL(PF10_SPI_SLAVE4) | \
PIN_OTYPE_PUSHPULL(PF11_SPI_SLAVE5) | \
PIN_OTYPE_PUSHPULL(PF12_V5V_HIPOWER_EN) | \
PIN_OTYPE_OPENDRAIN(PF13_V5V_HIPOWER_OC) | \
PIN_OTYPE_OPENDRAIN(PF14_I2C4_SCL) | \
PIN_OTYPE_OPENDRAIN(PF15_I2C4_SDA))
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_SPEED_HIGH(PF00_I2C2_SDA) | \
PIN_OSPEED_SPEED_HIGH(PF01_I2C2_SCL) | \
PIN_OSPEED_SPEED_HIGH(PF02_SPI_SLAVE0) | \
PIN_OSPEED_SPEED_HIGH(PF03_SPI_SLAVE1) | \
PIN_OSPEED_SPEED_HIGH(PF04_SPI_SLAVE2) | \
PIN_OSPEED_SPEED_HIGH(PF05_SPI_SLAVE3) | \
PIN_OSPEED_SPEED_HIGH(PF06_UART7_RX) | \
PIN_OSPEED_SPEED_HIGH(PF07_SPI5_SCK) | \
PIN_OSPEED_SPEED_HIGH(PF08_SPI5_MISO) | \
PIN_OSPEED_SPEED_HIGH(PF09_SPI5_MOSI) | \
PIN_OSPEED_SPEED_HIGH(PF10_SPI_SLAVE4) | \
PIN_OSPEED_SPEED_HIGH(PF11_SPI_SLAVE5) | \
PIN_OSPEED_SPEED_VERYLOW(PF12_V5V_HIPOWER_EN) | \
PIN_OSPEED_SPEED_VERYLOW(PF13_V5V_HIPOWER_OC) | \
PIN_OSPEED_SPEED_HIGH(PF14_I2C4_SCL) | \
PIN_OSPEED_SPEED_HIGH(PF15_I2C4_SDA))
#define VAL_GPIOF_PUPDR (PIN_PUPDR_PULLUP(PF00_I2C2_SDA) | \
PIN_PUPDR_PULLUP(PF01_I2C2_SCL) | \
PIN_PUPDR_FLOATING(PF02_SPI_SLAVE0) | \
PIN_PUPDR_FLOATING(PF03_SPI_SLAVE1) | \
PIN_PUPDR_FLOATING(PF04_SPI_SLAVE2) | \
PIN_PUPDR_FLOATING(PF05_SPI_SLAVE3) | \
PIN_PUPDR_FLOATING(PF06_UART7_RX) | \
PIN_PUPDR_FLOATING(PF07_SPI5_SCK) | \
PIN_PUPDR_FLOATING(PF08_SPI5_MISO) | \
PIN_PUPDR_FLOATING(PF09_SPI5_MOSI) | \
PIN_PUPDR_FLOATING(PF10_SPI_SLAVE4) | \
PIN_PUPDR_FLOATING(PF11_SPI_SLAVE5) | \
PIN_PUPDR_FLOATING(PF12_V5V_HIPOWER_EN) | \
PIN_PUPDR_PULLDOWN(PF13_V5V_HIPOWER_OC) | \
PIN_PUPDR_PULLUP(PF14_I2C4_SCL) | \
PIN_PUPDR_PULLUP(PF15_I2C4_SDA))
#define VAL_GPIOF_ODR (PIN_ODR_LEVEL_HIGH(PF00_I2C2_SDA) | \
PIN_ODR_LEVEL_HIGH(PF01_I2C2_SCL) | \
PIN_ODR_LEVEL_HIGH(PF02_SPI_SLAVE0) | \
PIN_ODR_LEVEL_HIGH(PF03_SPI_SLAVE1) | \
PIN_ODR_LEVEL_HIGH(PF04_SPI_SLAVE2) | \