#include "project.h" static void kbd_dispatch (void) { uint8_t c; if (ring_read_byte (&rx1_ring, &c)) return; printf ("KEY> %c\r\n", c); } int main (void) { char buf[128]; int c; /*set up pll */ rcc_clock_setup_in_hse_8mhz_out_72mhz (); /*turn on clocks which aren't done elsewhere */ rcc_periph_clock_enable (RCC_GPIOA); rcc_periph_clock_enable (RCC_GPIOB); rcc_periph_clock_enable (RCC_GPIOC); rcc_periph_clock_enable (RCC_AFIO); /*Adjust interrupt priorities so that uarts trump timer */ nvic_set_priority (NVIC_USART1_IRQ, 0x40); nvic_set_priority (NVIC_USART2_IRQ, 0x40); nvic_set_priority (NVIC_USART3_IRQ, 0x40); nvic_set_priority (NVIC_SYSTICK_IRQ, 0xff); ticker_init (); led_init (); usart_init (); i2cp_init (); lcd_init (); lcd_write ("Hello world", 0, 0); for (;;) { if (!ring_empty (&rx1_ring)) kbd_dispatch (); delay_ms (1000); printf ("Counter is %x\n", c); sprintf (buf, "%8x", c++); lcd_write (buf, 0, 1); led_set (c & 1 ? LED0 : LED1); } return 0; }