36#ifndef LIBOPENCM3_GPIO_H
37#define LIBOPENCM3_GPIO_H
49#define GPIOA GPIO_PORT_A_BASE
50#define GPIOB GPIO_PORT_B_BASE
51#define GPIOC GPIO_PORT_C_BASE
52#define GPIOD GPIO_PORT_D_BASE
53#define GPIOE GPIO_PORT_E_BASE
54#define GPIOF GPIO_PORT_F_BASE
55#define GPIOG GPIO_PORT_G_BASE
63#define GPIO_CAN1_RX GPIO11
64#define GPIO_CAN1_TX GPIO12
65#define GPIO_CAN_RX GPIO_CAN1_RX
66#define GPIO_CAN_TX GPIO_CAN1_TX
68#define GPIO_CAN_PB_RX GPIO8
69#define GPIO_CAN_PB_TX GPIO9
70#define GPIO_CAN1_PB_RX GPIO_CAN_PB_RX
71#define GPIO_CAN1_PB_TX GPIO_CAN_PB_TX
73#define GPIO_CAN_PD_RX GPIO0
74#define GPIO_CAN_PD_TX GPIO1
75#define GPIO_CAN1_PD_RX GPIO_CAN_PD_RX
76#define GPIO_CAN1_PD_TX GPIO_CAN_PD_TX
79#define GPIO_BANK_CAN1_RX GPIOA
80#define GPIO_BANK_CAN1_TX GPIOA
81#define GPIO_BANK_CAN_RX GPIO_BANK_CAN1_RX
82#define GPIO_BANK_CAN_TX GPIO_BANK_CAN1_TX
84#define GPIO_BANK_CAN_PB_RX GPIOB
85#define GPIO_BANK_CAN_PB_TX GPIOB
86#define GPIO_BANK_CAN1_PB_RX GPIO_BANK_CAN_PB_RX
87#define GPIO_BANK_CAN1_PB_TX GPIO_BANK_CAN_PB_TX
89#define GPIO_BANK_CAN_PD_RX GPIOD
90#define GPIO_BANK_CAN_PD_TX GPIOD
91#define GPIO_BANK_CAN1_PD_RX GPIO_BANK_CAN_PD_RX
92#define GPIO_BANK_CAN1_PD_TX GPIO_BANK_CAN_PD_TX
95#define GPIO_CAN2_RX GPIO12
96#define GPIO_CAN2_TX GPIO13
98#define GPIO_CAN2_RE_RX GPIO5
99#define GPIO_CAN2_RE_TX GPIO6
102#define GPIO_BANK_CAN2_RX GPIOB
103#define GPIO_BANK_CAN2_TX GPIOB
105#define GPIO_BANK_CAN2_RE_RX GPIOB
106#define GPIO_BANK_CAN2_RE_TX GPIOB
109#define GPIO_JTMS_SWDIO GPIO13
110#define GPIO_JTCK_SWCLK GPIO14
111#define GPIO_JTDI GPIO15
112#define GPIO_JTDO_TRACESWO GPIO3
113#define GPIO_JNTRST GPIO4
114#define GPIO_TRACECK GPIO2
115#define GPIO_TRACED0 GPIO3
116#define GPIO_TRACED1 GPIO4
117#define GPIO_TRACED2 GPIO5
118#define GPIO_TRACED3 GPIO6
121#define GPIO_BANK_JTMS_SWDIO GPIOA
122#define GPIO_BANK_JTCK_SWCLK GPIOA
123#define GPIO_BANK_JTDI GPIOA
124#define GPIO_BANK_JTDO_TRACESWO GPIOB
125#define GPIO_BANK_JNTRST GPIOB
126#define GPIO_BANK_TRACECK GPIOE
127#define GPIO_BANK_TRACED0 GPIOE
128#define GPIO_BANK_TRACED1 GPIOE
129#define GPIO_BANK_TRACED2 GPIOE
130#define GPIO_BANK_TRACED3 GPIOE
133#define GPIO_TIM5_CH1 GPIO0
134#define GPIO_TIM5_CH2 GPIO1
135#define GPIO_TIM5_CH3 GPIO2
136#define GPIO_TIM5_CH4 GPIO3
139#define GPIO_BANK_TIM5_CH1 GPIOA
140#define GPIO_BANK_TIM5_CH2 GPIOA
141#define GPIO_BANK_TIM5_CH3 GPIOA
142#define GPIO_BANK_TIM5_CH4 GPIOA
143#define GPIO_BANK_TIM5 GPIOA
146#define GPIO_TIM4_CH1 GPIO6
147#define GPIO_TIM4_CH2 GPIO7
148#define GPIO_TIM4_CH3 GPIO8
149#define GPIO_TIM4_CH4 GPIO9
151#define GPIO_TIM4_RE_CH1 GPIO12
152#define GPIO_TIM4_RE_CH2 GPIO13
153#define GPIO_TIM4_RE_CH3 GPIO14
154#define GPIO_TIM4_RE_CH4 GPIO15
157#define GPIO_BANK_TIM4_CH1 GPIOB
158#define GPIO_BANK_TIM4_CH2 GPIOB
159#define GPIO_BANK_TIM4_CH3 GPIOB
160#define GPIO_BANK_TIM4_CH4 GPIOB
161#define GPIO_BANK_TIM4 GPIOB
163#define GPIO_BANK_TIM4_RE_CH1 GPIOD
164#define GPIO_BANK_TIM4_RE_CH2 GPIOD
165#define GPIO_BANK_TIM4_RE_CH3 GPIOD
166#define GPIO_BANK_TIM4_RE_CH4 GPIOD
167#define GPIO_BANK_TIM4_RE GPIOD
170#define GPIO_TIM3_CH1 GPIO6
171#define GPIO_TIM3_CH2 GPIO7
172#define GPIO_TIM3_CH3 GPIO0
173#define GPIO_TIM3_CH4 GPIO1
175#define GPIO_TIM3_PR_CH1 GPIO4
176#define GPIO_TIM3_PR_CH2 GPIO5
177#define GPIO_TIM3_PR_CH3 GPIO0
178#define GPIO_TIM3_PR_CH4 GPIO1
180#define GPIO_TIM3_FR_CH1 GPIO6
181#define GPIO_TIM3_FR_CH2 GPIO7
182#define GPIO_TIM3_FR_CH3 GPIO8
183#define GPIO_TIM3_FR_CH4 GPIO9
186#define GPIO_BANK_TIM3_CH1 GPIOA
187#define GPIO_BANK_TIM3_CH2 GPIOA
188#define GPIO_BANK_TIM3_CH3 GPIOB
189#define GPIO_BANK_TIM3_CH4 GPIOB
190#define GPIO_BANK_TIM3_CH12 GPIOA
191#define GPIO_BANK_TIM3_CH34 GPIOB
193#define GPIO_BANK_TIM3_PR_CH1 GPIOB
194#define GPIO_BANK_TIM3_PR_CH2 GPIOB
195#define GPIO_BANK_TIM3_PR_CH3 GPIOB
196#define GPIO_BANK_TIM3_PR_CH4 GPIOB
197#define GPIO_BANK_TIM3_PR GPIOB
199#define GPIO_BANK_TIM3_FR_CH1 GPIOC
200#define GPIO_BANK_TIM3_FR_CH2 GPIOC
201#define GPIO_BANK_TIM3_FR_CH3 GPIOC
202#define GPIO_BANK_TIM3_FR_CH4 GPIOC
203#define GPIO_BANK_TIM3_FR GPIOC
206#define GPIO_TIM2_CH1_ETR GPIO0
207#define GPIO_TIM2_CH2 GPIO1
208#define GPIO_TIM2_CH3 GPIO2
209#define GPIO_TIM2_CH4 GPIO3
211#define GPIO_TIM2_PR1_CH1_ETR GPIO15
212#define GPIO_TIM2_PR1_CH2 GPIO3
213#define GPIO_TIM2_PR1_CH3 GPIO2
214#define GPIO_TIM2_PR1_CH4 GPIO3
216#define GPIO_TIM2_PR2_CH1_ETR GPIO0
217#define GPIO_TIM2_PR2_CH2 GPIO1
218#define GPIO_TIM2_PR2_CH3 GPIO10
219#define GPIO_TIM2_PR2_CH4 GPIO11
221#define GPIO_TIM2_FR_CH1_ETR GPIO15
222#define GPIO_TIM2_FR_CH2 GPIO3
223#define GPIO_TIM2_FR_CH3 GPIO10
224#define GPIO_TIM2_FR_CH4 GPIO11
227#define GPIO_BANK_TIM2_CH1_ETR GPIOA
228#define GPIO_BANK_TIM2_CH2 GPIOA
229#define GPIO_BANK_TIM2_CH3 GPIOA
230#define GPIO_BANK_TIM2_CH4 GPIOA
231#define GPIO_BANK_TIM2 GPIOA
233#define GPIO_BANK_TIM2_PR1_CH1_ETR GPIOA
234#define GPIO_BANK_TIM2_PR1_CH2 GPIOB
235#define GPIO_BANK_TIM2_PR1_CH3 GPIOA
236#define GPIO_BANK_TIM2_PR1_CH4 GPIOA
237#define GPIO_BANK_TIM2_PR1_CH134 GPIOA
239#define GPIO_BANK_TIM2_PR2_CH1_ETR GPIOA
240#define GPIO_BANK_TIM2_PR2_CH2 GPIOA
241#define GPIO_BANK_TIM2_PR2_CH3 GPIOB
242#define GPIO_BANK_TIM2_PR2_CH4 GPIOB
243#define GPIO_BANK_TIM2_PR2_CH12 GPIOA
244#define GPIO_BANK_TIM2_PR2_CH34 GPIOB
246#define GPIO_BANK_TIM2_FR_CH1_ETR GPIOA
247#define GPIO_BANK_TIM2_FR_CH2 GPIOB
248#define GPIO_BANK_TIM2_FR_CH3 GPIOB
249#define GPIO_BANK_TIM2_FR_CH4 GPIOB
250#define GPIO_BANK_TIM2_FR_CH234 GPIOB
253#define GPIO_TIM1_ETR GPIO12
254#define GPIO_TIM1_CH1 GPIO8
255#define GPIO_TIM1_CH2 GPIO9
256#define GPIO_TIM1_CH3 GPIO10
257#define GPIO_TIM1_CH4 GPIO11
258#define GPIO_TIM1_BKIN GPIO12
259#define GPIO_TIM1_CH1N GPIO13
260#define GPIO_TIM1_CH2N GPIO14
261#define GPIO_TIM1_CH3N GPIO15
263#define GPIO_TIM1_PR_ETR GPIO12
264#define GPIO_TIM1_PR_CH1 GPIO8
265#define GPIO_TIM1_PR_CH2 GPIO9
266#define GPIO_TIM1_PR_CH3 GPIO10
267#define GPIO_TIM1_PR_CH4 GPIO11
268#define GPIO_TIM1_PR_BKIN GPIO6
269#define GPIO_TIM1_PR_CH1N GPIO7
270#define GPIO_TIM1_PR_CH2N GPIO0
271#define GPIO_TIM1_PR_CH3N GPIO1
273#define GPIO_TIM1_FR_ETR GPIO7
274#define GPIO_TIM1_FR_CH1 GPIO9
275#define GPIO_TIM1_FR_CH2 GPIO11
276#define GPIO_TIM1_FR_CH3 GPIO13
277#define GPIO_TIM1_FR_CH4 GPIO14
278#define GPIO_TIM1_FR_BKIN GPIO15
279#define GPIO_TIM1_FR_CH1N GPIO8
280#define GPIO_TIM1_FR_CH2N GPIO10
281#define GPIO_TIM1_FR_CH3N GPIO12
284#define GPIO_BANK_TIM1_ETR GPIOA
285#define GPIO_BANK_TIM1_CH1 GPIOA
286#define GPIO_BANK_TIM1_CH2 GPIOA
287#define GPIO_BANK_TIM1_CH3 GPIOA
288#define GPIO_BANK_TIM1_CH4 GPIOA
289#define GPIO_BANK_TIM1_BKIN GPIOB
290#define GPIO_BANK_TIM1_CH1N GPIOB
291#define GPIO_BANK_TIM1_CH2N GPIOB
292#define GPIO_BANK_TIM1_CH3N GPIOB
293#define GPIO_BANK_TIM1_ETR_CH1234 GPIOA
294#define GPIO_BANK_TIM1_BKIN_CH123N GPIOB
296#define GPIO_BANK_TIM1_PR_ETR GPIOA
297#define GPIO_BANK_TIM1_PR_CH1 GPIOA
298#define GPIO_BANK_TIM1_PR_CH2 GPIOA
299#define GPIO_BANK_TIM1_PR_CH3 GPIOA
300#define GPIO_BANK_TIM1_PR_CH4 GPIOA
301#define GPIO_BANK_TIM1_PR_BKIN GPIOA
302#define GPIO_BANK_TIM1_PR_CH1N GPIOA
303#define GPIO_BANK_TIM1_PR_CH2N GPIOB
304#define GPIO_BANK_TIM1_PR_CH3N GPIOB
305#define GPIO_BANK_TIM1_PR_ETR_CH1234_BKIN_CH1N GPIOA
306#define GPIO_BANK_TIM1_PR_CH23N GPIOB
308#define GPIO_BANK_TIM1_FR_ETR GPIOE
309#define GPIO_BANK_TIM1_FR_CH1 GPIOE
310#define GPIO_BANK_TIM1_FR_CH2 GPIOE
311#define GPIO_BANK_TIM1_FR_CH3 GPIOE
312#define GPIO_BANK_TIM1_FR_CH4 GPIOE
313#define GPIO_BANK_TIM1_FR_BKIN GPIOE
314#define GPIO_BANK_TIM1_FR_CH1N GPIOE
315#define GPIO_BANK_TIM1_FR_CH2N GPIOE
316#define GPIO_BANK_TIM1_FR_CH3N GPIOE
317#define GPIO_BANK_TIM1_FR GPIOE
320#define GPIO_UART5_TX GPIO12
321#define GPIO_UART5_RX GPIO2
324#define GPIO_BANK_UART5_TX GPIOC
325#define GPIO_BANK_UART5_RX GPIOD
328#define GPIO_UART4_TX GPIO10
329#define GPIO_UART4_RX GPIO11
332#define GPIO_BANK_UART4_TX GPIOC
333#define GPIO_BANK_UART4_RX GPIOC
336#define GPIO_USART3_TX GPIO10
337#define GPIO_USART3_RX GPIO11
338#define GPIO_USART3_CK GPIO12
339#define GPIO_USART3_CTS GPIO13
340#define GPIO_USART3_RTS GPIO14
342#define GPIO_USART3_PR_TX GPIO10
343#define GPIO_USART3_PR_RX GPIO11
344#define GPIO_USART3_PR_CK GPIO12
345#define GPIO_USART3_PR_CTS GPIO13
346#define GPIO_USART3_PR_RTS GPIO14
348#define GPIO_USART3_FR_TX GPIO8
349#define GPIO_USART3_FR_RX GPIO9
350#define GPIO_USART3_FR_CK GPIO10
351#define GPIO_USART3_FR_CTS GPIO11
352#define GPIO_USART3_FR_RTS GPIO12
355#define GPIO_BANK_USART3_TX GPIOB
356#define GPIO_BANK_USART3_RX GPIOB
357#define GPIO_BANK_USART3_CK GPIOB
358#define GPIO_BANK_USART3_CTS GPIOB
359#define GPIO_BANK_USART3_RTS GPIOB
361#define GPIO_BANK_USART3_PR_TX GPIOC
362#define GPIO_BANK_USART3_PR_RX GPIOC
363#define GPIO_BANK_USART3_PR_CK GPIOC
364#define GPIO_BANK_USART3_PR_CTS GPIOB
365#define GPIO_BANK_USART3_PR_RTS GPIOB
367#define GPIO_BANK_USART3_FR_TX GPIOD
368#define GPIO_BANK_USART3_FR_RX GPIOD
369#define GPIO_BANK_USART3_FR_CK GPIOD
370#define GPIO_BANK_USART3_FR_CTS GPIOD
371#define GPIO_BANK_USART3_FR_RTS GPIOD
374#define GPIO_USART2_CTS GPIO0
375#define GPIO_USART2_RTS GPIO1
376#define GPIO_USART2_TX GPIO2
377#define GPIO_USART2_RX GPIO3
378#define GPIO_USART2_CK GPIO4
380#define GPIO_USART2_RE_CTS GPIO3
381#define GPIO_USART2_RE_RTS GPIO4
382#define GPIO_USART2_RE_TX GPIO5
383#define GPIO_USART2_RE_RX GPIO6
384#define GPIO_USART2_RE_CK GPIO7
387#define GPIO_BANK_USART2_CTS GPIOA
388#define GPIO_BANK_USART2_RTS GPIOA
389#define GPIO_BANK_USART2_TX GPIOA
390#define GPIO_BANK_USART2_RX GPIOA
391#define GPIO_BANK_USART2_CK GPIOA
393#define GPIO_BANK_USART2_RE_CTS GPIOD
394#define GPIO_BANK_USART2_RE_RTS GPIOD
395#define GPIO_BANK_USART2_RE_TX GPIOD
396#define GPIO_BANK_USART2_RE_RX GPIOD
397#define GPIO_BANK_USART2_RE_CK GPIOD
400#define GPIO_USART1_CTS GPIO11
401#define GPIO_USART1_RTS GPIO12
402#define GPIO_USART1_TX GPIO9
403#define GPIO_USART1_RX GPIO10
404#define GPIO_USART1_CK GPIO8
406#define GPIO_USART1_RE_TX GPIO6
407#define GPIO_USART1_RE_RX GPIO7
410#define GPIO_BANK_USART1_CTS GPIOA
411#define GPIO_BANK_USART1_RTS GPIOA
412#define GPIO_BANK_USART1_TX GPIOA
413#define GPIO_BANK_USART1_RX GPIOA
414#define GPIO_BANK_USART1_CK GPIOA
416#define GPIO_BANK_USART1_RE_TX GPIOB
417#define GPIO_BANK_USART1_RE_RX GPIOB
420#define GPIO_I2C1_SMBAI GPIO5
421#define GPIO_I2C1_SCL GPIO6
422#define GPIO_I2C1_SDA GPIO7
424#define GPIO_I2C1_RE_SMBAI GPIO5
425#define GPIO_I2C1_RE_SCL GPIO8
426#define GPIO_I2C1_RE_SDA GPIO9
429#define GPIO_BANK_I2C1_SMBAI GPIOB
430#define GPIO_BANK_I2C1_SCL GPIOB
431#define GPIO_BANK_I2C1_SDA GPIOB
433#define GPIO_BANK_I2C1_RE_SMBAI GPIOB
434#define GPIO_BANK_I2C1_RE_SCL GPIOB
435#define GPIO_BANK_I2C1_RE_SDA GPIOB
438#define GPIO_I2C2_SCL GPIO10
439#define GPIO_I2C2_SDA GPIO11
440#define GPIO_I2C2_SMBAI GPIO12
443#define GPIO_BANK_I2C2_SCL GPIOB
444#define GPIO_BANK_I2C2_SDA GPIOB
445#define GPIO_BANK_I2C2_SMBAI GPIOB
448#define GPIO_SPI1_NSS GPIO4
449#define GPIO_SPI1_SCK GPIO5
450#define GPIO_SPI1_MISO GPIO6
451#define GPIO_SPI1_MOSI GPIO7
453#define GPIO_SPI1_RE_NSS GPIO15
454#define GPIO_SPI1_RE_SCK GPIO3
455#define GPIO_SPI1_RE_MISO GPIO4
456#define GPIO_SPI1_RE_MOSI GPIO5
459#define GPIO_BANK_SPI1_NSS GPIOA
460#define GPIO_BANK_SPI1_SCK GPIOA
461#define GPIO_BANK_SPI1_MISO GPIOA
462#define GPIO_BANK_SPI1_MOSI GPIOA
464#define GPIO_BANK_SPI1_RE_NSS GPIOA
465#define GPIO_BANK_SPI1_RE_SCK GPIOB
466#define GPIO_BANK_SPI1_RE_MISO GPIOB
467#define GPIO_BANK_SPI1_RE_MOSI GPIOB
470#define GPIO_SPI2_NSS GPIO12
471#define GPIO_SPI2_SCK GPIO13
472#define GPIO_SPI2_MISO GPIO14
473#define GPIO_SPI2_MOSI GPIO15
476#define GPIO_BANK_SPI2_NSS GPIOB
477#define GPIO_BANK_SPI2_SCK GPIOB
478#define GPIO_BANK_SPI2_MISO GPIOB
479#define GPIO_BANK_SPI2_MOSI GPIOB
482#define GPIO_SPI3_NSS GPIO15
483#define GPIO_SPI3_SCK GPIO3
484#define GPIO_SPI3_MISO GPIO4
485#define GPIO_SPI3_MOSI GPIO5
487#define GPIO_SPI3_RE_NSS GPIO4
488#define GPIO_SPI3_RE_SCK GPIO10
489#define GPIO_SPI3_RE_MISO GPIO11
490#define GPIO_SPI3_RE_MOSI GPIO12
493#define GPIO_BANK_SPI3_NSS GPIOA
494#define GPIO_BANK_SPI3_SCK GPIOB
495#define GPIO_BANK_SPI3_MISO GPIOB
496#define GPIO_BANK_SPI3_MOSI GPIOB
498#define GPIO_BANK_SPI3_RE_NSS GPIOA
499#define GPIO_BANK_SPI3_RE_SCK GPIOC
500#define GPIO_BANK_SPI3_RE_MISO GPIOC
501#define GPIO_BANK_SPI3_RE_MOSI GPIOC
504#define GPIO_ETH_RX_DV_CRS_DV GPIO7
505#define GPIO_ETH_RXD0 GPIO4
506#define GPIO_ETH_RXD1 GPIO5
507#define GPIO_ETH_RXD2 GPIO0
508#define GPIO_ETH_RXD3 GPIO1
510#define GPIO_ETH_RE_RX_DV_CRS_DV GPIO8
511#define GPIO_ETH_RE_RXD0 GPIO9
512#define GPIO_ETH_RE_RXD1 GPIO10
513#define GPIO_ETH_RE_RXD2 GPIO11
514#define GPIO_ETH_RE_RXD3 GPIO12
517#define GPIO_BANK_ETH_RX_DV_CRS_DV GPIOA
518#define GPIO_BANK_ETH_RXD0 GPIOC
519#define GPIO_BANK_ETH_RXD1 GPIOC
520#define GPIO_BANK_ETH_RXD2 GPIOB
521#define GPIO_BANK_ETH_RXD3 GPIOB
523#define GPIO_BANK_ETH_RE_RX_DV_CRS_DV GPIOD
524#define GPIO_BANK_ETH_RE_RXD0 GPIOD
525#define GPIO_BANK_ETH_RE_RXD1 GPIOD
526#define GPIO_BANK_ETH_RE_RXD2 GPIOD
527#define GPIO_BANK_ETH_RE_RXD3 GPIOD
532#define GPIO_CRL(port) MMIO32((port) + 0x00)
533#define GPIOA_CRL GPIO_CRL(GPIOA)
534#define GPIOB_CRL GPIO_CRL(GPIOB)
535#define GPIOC_CRL GPIO_CRL(GPIOC)
536#define GPIOD_CRL GPIO_CRL(GPIOD)
537#define GPIOE_CRL GPIO_CRL(GPIOE)
538#define GPIOF_CRL GPIO_CRL(GPIOF)
539#define GPIOG_CRL GPIO_CRL(GPIOG)
542#define GPIO_CRH(port) MMIO32((port) + 0x04)
543#define GPIOA_CRH GPIO_CRH(GPIOA)
544#define GPIOB_CRH GPIO_CRH(GPIOB)
545#define GPIOC_CRH GPIO_CRH(GPIOC)
546#define GPIOD_CRH GPIO_CRH(GPIOD)
547#define GPIOE_CRH GPIO_CRH(GPIOE)
548#define GPIOF_CRH GPIO_CRH(GPIOF)
549#define GPIOG_CRH GPIO_CRH(GPIOG)
552#define GPIO_IDR(port) MMIO32((port) + 0x08)
553#define GPIOA_IDR GPIO_IDR(GPIOA)
554#define GPIOB_IDR GPIO_IDR(GPIOB)
555#define GPIOC_IDR GPIO_IDR(GPIOC)
556#define GPIOD_IDR GPIO_IDR(GPIOD)
557#define GPIOE_IDR GPIO_IDR(GPIOE)
558#define GPIOF_IDR GPIO_IDR(GPIOF)
559#define GPIOG_IDR GPIO_IDR(GPIOG)
562#define GPIO_ODR(port) MMIO32((port) + 0x0c)
563#define GPIOA_ODR GPIO_ODR(GPIOA)
564#define GPIOB_ODR GPIO_ODR(GPIOB)
565#define GPIOC_ODR GPIO_ODR(GPIOC)
566#define GPIOD_ODR GPIO_ODR(GPIOD)
567#define GPIOE_ODR GPIO_ODR(GPIOE)
568#define GPIOF_ODR GPIO_ODR(GPIOF)
569#define GPIOG_ODR GPIO_ODR(GPIOG)
572#define GPIO_BSRR(port) MMIO32((port) + 0x10)
573#define GPIOA_BSRR GPIO_BSRR(GPIOA)
574#define GPIOB_BSRR GPIO_BSRR(GPIOB)
575#define GPIOC_BSRR GPIO_BSRR(GPIOC)
576#define GPIOD_BSRR GPIO_BSRR(GPIOD)
577#define GPIOE_BSRR GPIO_BSRR(GPIOE)
578#define GPIOF_BSRR GPIO_BSRR(GPIOF)
579#define GPIOG_BSRR GPIO_BSRR(GPIOG)
582#define GPIO_BRR(port) MMIO16((port) + 0x14)
583#define GPIOA_BRR GPIO_BRR(GPIOA)
584#define GPIOB_BRR GPIO_BRR(GPIOB)
585#define GPIOC_BRR GPIO_BRR(GPIOC)
586#define GPIOD_BRR GPIO_BRR(GPIOD)
587#define GPIOE_BRR GPIO_BRR(GPIOE)
588#define GPIOF_BRR GPIO_BRR(GPIOF)
589#define GPIOG_BRR GPIO_BRR(GPIOG)
592#define GPIO_LCKR(port) MMIO32((port) + 0x18)
593#define GPIOA_LCKR GPIO_LCKR(GPIOA)
594#define GPIOB_LCKR GPIO_LCKR(GPIOB)
595#define GPIOC_LCKR GPIO_LCKR(GPIOC)
596#define GPIOD_LCKR GPIO_LCKR(GPIOD)
597#define GPIOE_LCKR GPIO_LCKR(GPIOE)
598#define GPIOF_LCKR GPIO_LCKR(GPIOF)
599#define GPIOG_LCKR GPIO_LCKR(GPIOG)
618#define GPIO_CNF_INPUT_ANALOG 0x00
620#define GPIO_CNF_INPUT_FLOAT 0x01
622#define GPIO_CNF_INPUT_PULL_UPDOWN 0x02
625#define GPIO_CNF_OUTPUT_PUSHPULL 0x00
627#define GPIO_CNF_OUTPUT_OPENDRAIN 0x01
629#define GPIO_CNF_OUTPUT_ALTFN_PUSHPULL 0x02
631#define GPIO_CNF_OUTPUT_ALTFN_OPENDRAIN 0x03
642#define GPIO_MODE_INPUT 0x00
643#define GPIO_MODE_OUTPUT_10_MHZ 0x01
644#define GPIO_MODE_OUTPUT_2_MHZ 0x02
645#define GPIO_MODE_OUTPUT_50_MHZ 0x03
668#define AFIO_EVCR MMIO32(AFIO_BASE + 0x00)
671#define AFIO_MAPR MMIO32(AFIO_BASE + 0x04)
674#define AFIO_EXTICR(i) MMIO32(AFIO_BASE + 0x08 + (i)*4)
675#define AFIO_EXTICR1 AFIO_EXTICR(0)
676#define AFIO_EXTICR2 AFIO_EXTICR(1)
677#define AFIO_EXTICR3 AFIO_EXTICR(2)
678#define AFIO_EXTICR4 AFIO_EXTICR(3)
681#define AFIO_MAPR2 MMIO32(AFIO_BASE + 0x1C)
686#define AFIO_EVCR_EVOE (1 << 7)
693#define AFIO_EVCR_PORT_PA (0x0 << 4)
694#define AFIO_EVCR_PORT_PB (0x1 << 4)
695#define AFIO_EVCR_PORT_PC (0x2 << 4)
696#define AFIO_EVCR_PORT_PD (0x3 << 4)
697#define AFIO_EVCR_PORT_PE (0x4 << 4)
705#define AFIO_EVCR_PIN_Px0 (0x0 << 0)
706#define AFIO_EVCR_PIN_Px1 (0x1 << 0)
707#define AFIO_EVCR_PIN_Px2 (0x2 << 0)
708#define AFIO_EVCR_PIN_Px3 (0x3 << 0)
709#define AFIO_EVCR_PIN_Px4 (0x4 << 0)
710#define AFIO_EVCR_PIN_Px5 (0x5 << 0)
711#define AFIO_EVCR_PIN_Px6 (0x6 << 0)
712#define AFIO_EVCR_PIN_Px7 (0x7 << 0)
713#define AFIO_EVCR_PIN_Px8 (0x8 << 0)
714#define AFIO_EVCR_PIN_Px9 (0x9 << 0)
715#define AFIO_EVCR_PIN_Px10 (0xA << 0)
716#define AFIO_EVCR_PIN_Px11 (0xB << 0)
717#define AFIO_EVCR_PIN_Px12 (0xC << 0)
718#define AFIO_EVCR_PIN_Px13 (0xD << 0)
719#define AFIO_EVCR_PIN_Px14 (0xE << 0)
720#define AFIO_EVCR_PIN_Px15 (0xF << 0)
734#define AFIO_MAPR_PTP_PPS_REMAP (1 << 30)
738#define AFIO_MAPR_TIM2ITR1_IREMAP (1 << 29)
742#define AFIO_MAPR_SPI3_REMAP (1 << 28)
746#define AFIO_MAPR_MII_RMII_SEL (1 << 23)
750#define AFIO_MAPR_CAN2_REMAP (1 << 22)
754#define AFIO_MAPR_ETH_REMAP (1 << 21)
765#define AFIO_MAPR_SWJ_MASK (0x7 << 24)
767#define AFIO_MAPR_SWJ_CFG_FULL_SWJ (0x0 << 24)
769#define AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_JNTRST (0x1 << 24)
771#define AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON (0x2 << 24)
773#define AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_OFF (0x4 << 24)
785#define AFIO_MAPR_ADC2_ETRGREG_REMAP (1 << 20)
792#define AFIO_MAPR_ADC2_ETRGINJ_REMAP (1 << 19)
799#define AFIO_MAPR_ADC1_ETRGREG_REMAP (1 << 18)
806#define AFIO_MAPR_ADC1_ETRGINJ_REMAP (1 << 17)
810#define AFIO_MAPR_TIM5CH4_IREMAP (1 << 16)
814#define AFIO_MAPR_PD01_REMAP (1 << 15)
818#define AFIO_MAPR_TIM4_REMAP (1 << 12)
822#define AFIO_MAPR_USART2_REMAP (1 << 3)
826#define AFIO_MAPR_USART1_REMAP (1 << 2)
830#define AFIO_MAPR_I2C1_REMAP (1 << 1)
834#define AFIO_MAPR_SPI1_REMAP (1 << 0)
842#define AFIO_MAPR_CAN1_REMAP_PORTA (0x0 << 13)
843#define AFIO_MAPR_CAN1_REMAP_PORTB (0x2 << 13)
844#define AFIO_MAPR_CAN1_REMAP_PORTD (0x3 << 13)
852#define AFIO_MAPR_TIM3_REMAP_NO_REMAP (0x0 << 10)
853#define AFIO_MAPR_TIM3_REMAP_PARTIAL_REMAP (0x2 << 10)
854#define AFIO_MAPR_TIM3_REMAP_FULL_REMAP (0x3 << 10)
862#define AFIO_MAPR_TIM2_REMAP_NO_REMAP (0x0 << 8)
863#define AFIO_MAPR_TIM2_REMAP_PARTIAL_REMAP1 (0x1 << 8)
864#define AFIO_MAPR_TIM2_REMAP_PARTIAL_REMAP2 (0x2 << 8)
865#define AFIO_MAPR_TIM2_REMAP_FULL_REMAP (0x3 << 8)
873#define AFIO_MAPR_TIM1_REMAP_NO_REMAP (0x0 << 6)
874#define AFIO_MAPR_TIM1_REMAP_PARTIAL_REMAP (0x1 << 6)
875#define AFIO_MAPR_TIM1_REMAP_FULL_REMAP (0x3 << 6)
883#define AFIO_MAPR_USART3_REMAP_NO_REMAP (0x0 << 4)
884#define AFIO_MAPR_USART3_REMAP_PARTIAL_REMAP (0x1 << 4)
885#define AFIO_MAPR_USART3_REMAP_FULL_REMAP (0x3 << 4)
893#define AFIO_MAPR2_MISC_REMAP (1 << 13)
896#define AFIO_MAPR2_TIM12_REMAP (1 << 12)
899#define AFIO_MAPR2_TIM76_DAC_DMA_REMAPE (1 << 11)
903#define AFIO_MAPR2_FSMC_NADV_DISCONNECT (1 << 10)
906#define AFIO_MAPR2_TIM14_REMAP (1 << 9)
909#define AFIO_MAPR2_TIM13_REMAP (1 << 8)
912#define AFIO_MAPR2_TIM11_REMAP (1 << 7)
915#define AFIO_MAPR2_TIM10_REMAP (1 << 6)
918#define AFIO_MAPR2_TIM9_REMAP (1 << 5)
924#define AFIO_MAPR2_TIM1_DMA_REMAP (1 << 4)
927#define AFIO_MAPR2_CEC_REMAP (1 << 3)
930#define AFIO_MAPR2_TIM17_REMAP (1 << 2)
933#define AFIO_MAPR2_TIM16_REMAP (1 << 1)
936#define AFIO_MAPR2_TIM15_REMAP (1 << 0)
943#define AFIO_EXTICR_FIELDSIZE 4
960#define AFIO_EXTI10 10
961#define AFIO_EXTI11 11
962#define AFIO_EXTI12 12
963#define AFIO_EXTI13 13
964#define AFIO_EXTI14 14
965#define AFIO_EXTI15 15
973void gpio_set_mode(uint32_t gpioport, uint8_t mode, uint8_t cnf,
void gpio_secondary_remap(uint32_t maps)
Map Alternate Function Port Bits (Secondary Set)
void gpio_primary_remap(uint32_t swjenable, uint32_t maps)
Map Alternate Function Port Bits (Main Set)
void gpio_set_eventout(uint8_t evoutport, uint8_t evoutpin)
Map the EVENTOUT signal.
void gpio_set_mode(uint32_t gpioport, uint8_t mode, uint8_t cnf, uint16_t gpios)
Set GPIO Pin Mode.