Small example
GPIOA_MODER_MODER1 ANALOG bfs!
becomes
$48000000 2 %11 bfs!
A larger example
Human Friendly
: gpio-init ( -- ) \ Enable GPIOA and GPIOC RCC_AHBENR_IOPAEN enable! \ enable GPIOA RCC_AHBENR_IOPCEN enable! \ enable GPIOC\ PA1 is COMP1 & 2 INPUT. I/Os used as comparators inputs must be configured in analog mode. GPIOA_MODER_MODER1 ANALOG bfs! \ porta-1 is analog mode
\ PA5 is TIM2_CH1_ETR external clock via AF2 GPIOA_MODER_MODER5 AF bfs! GPIOA_AFRL_AFRL5 AF2 bfs!
\ PA6 COMP1 OUT for LMT01 pulses GPIOA_MODER_MODER6 AF bfs! GPIOA_AFRL_AFRL6 AF7 bfs!
\ PA7 is INPUT for TIM14_CH1 via AF4 GPIOA_MODER_MODER7 AF bfs! GPIOA_AFRL_AFRL7 AF4 bfs!
\ PA12 is COMP2 out via AF7 for LED GPIOA_MODER_MODER12 AF bfs! GPIOA_AFRH_AFRH12 AF7 bfs!
\ Power to LMT-01 via PC1 GPIOC_MODER_MODER1 OUTPUT bfs! \ PC1 to output (%01) PUSH PULL GPIOC_BSRR_BR1 1 bfs! \ PC1 set, BSRR is atomic so no bis! is needed
\ GPIOC 8 and 9 drive leds GPIOC_MODER_MODER8 OUTPUT bfs! \ blue led GPIOC_MODER_MODER9 OUTPUT bfs! \ green led ;
MCU Friendly
: gpio-init $40021014 17 enable! $40021014 19 enable! $48000000 2 %11 bfs! $48000000 10 %10 bfs! $48000020 20 %0010 bfs! $48000000 12 %10 bfs! $48000020 24 %0111 bfs! $48000000 14 %10 bfs! $48000020 28 %0100 bfs! $48000000 24 %10 bfs! $48000024 16 %0111 bfs! $48000800 2 %01 bfs! $48000818 17 1 bfs! $48000800 16 %01 bfs! $48000800 18 %01 bfs! ;