+fn configure_push_buttons() {
+ // Configure lower right push button.
+ gpio::set_direction(gpio::GPIOA, 1 << 1, gpio::Direction::Input);
+ port::set_af(port::PORTA, 1, 1);
+ port::set_pull(port::PORTA, 1, port::Pull::Up);
+
+ // Configure upper right push button.
+ gpio::set_direction(gpio::GPIOA, 1 << 12, gpio::Direction::Input);
+ port::set_af(port::PORTA, 12, 1);
+ port::set_pull(port::PORTA, 12, port::Pull::Up);
+
+ // Configure lower left push button.
+ gpio::set_direction(gpio::GPIOE, 1 << 24, gpio::Direction::Input);
+ port::set_af(port::PORTE, 24, 1);
+ port::set_pull(port::PORTE, 24, port::Pull::Up);
+
+ // Configure upper left push button.
+ gpio::set_direction(gpio::GPIOE, 1 << 25, gpio::Direction::Input);
+ port::set_af(port::PORTE, 25, 1);
+ port::set_pull(port::PORTE, 25, port::Pull::Up);
+
+ // Configure middle left push button.
+ gpio::set_direction(gpio::GPIOE, 1 << 31, gpio::Direction::Input);
+ port::set_af(port::PORTE, 31, 1);
+ port::set_pull(port::PORTE, 31, port::Pull::Up);
+}
+
+fn poll_pta12() -> bool {
+ (gpio::get(gpio::GPIOA) & (1 << 12)) == 0
+}
+
+fn uart0_try_read() -> Option<u8> {
+ extern {
+ static mut uart0_rx_buf: Ringbuf;
+ }
+
+ unsafe {
+ if uart0_rx_buf.is_empty() {
+ None
+ } else {
+ Some(uart0_rx_buf.read())
+ }
+ }
+}
+