Fixes to usb stack so that it works
[barbilliards.git] / src / timer.c
index db8b8bb1db7ef4ee48af6c2cc74e6774673368b2..73283f467aace85480d393f01b4796da77b34958 100644 (file)
@@ -47,10 +47,13 @@ void sys_tick_handler(void) {
     /* calculate remaining seconds to print out on the serial port, only do this every
        1000 millis or so */
     if (n_millis_loops >= 4) {
-        char seconds_remaining[5];
-        sprintf(seconds_remaining, "%d", (int)((game_time - n_millis_total) / 1000));
-        for (int i = 0; i < 4; i++) {
-            cdcacm_putchar(seconds_remaining[i]);
+        char time_remaining[6];
+        uint32_t seconds_remaining = (uint32_t)((game_time - n_millis_total) / 1000);
+        int minutes = (int)(seconds_remaining / 60);
+        int seconds = (int)(seconds_remaining % 60);
+        sprintf(time_remaining, "%02d:%02d", minutes, seconds);
+        for (int i = 0; i < 5; i++) {
+            cdcacm_putchar(time_remaining[i]);
         }
         cdcacm_putchar('\r');
         cdcacm_putchar('\n');
@@ -71,6 +74,9 @@ static void clock_setup(void) {
     rcc_clock_setup_in_hse_8mhz_out_72mhz();
     rcc_periph_clock_enable(RCC_GPIOA);
     rcc_periph_clock_enable(RCC_GPIOC);
+    rcc_periph_clock_enable(RCC_AFIO);
+
+    AFIO_MAPR |= AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON;
 
     /* 72MHz / 8 => 9000000 counts per second */
     systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
@@ -87,11 +93,6 @@ static void gpio_setup(void) {
     gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ,
         GPIO_CNF_OUTPUT_PUSHPULL, GPIO13);
     gpio_set(GPIOC, GPIO13);
-
-    // Pull up the USB D+ line for reset
-    gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ,
-      GPIO_CNF_OUTPUT_OPENDRAIN, GPIO12);
-    gpio_clear(GPIOA, GPIO12);
 }
 
 int main(void)