altos/stm32f4-disco: Start hooking up stm32f413 USB for the disco board
authorKeith Packard <keithp@keithp.com>
Tue, 2 Oct 2018 19:48:25 +0000 (12:48 -0700)
committerKeith Packard <keithp@keithp.com>
Sat, 13 Oct 2018 15:23:25 +0000 (08:23 -0700)
Non-working as yet.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/stm32f4-disco/Makefile
src/stm32f4-disco/ao_disco.c
src/stm32f4-disco/ao_pins.h

index c4aa8e0..de30316 100644 (file)
@@ -29,10 +29,12 @@ ALTOS_SRC = \
        ao_timer.c \
        ao_task.c \
        ao_stdio.c \
-       ao_product.o \
+       ao_product.c \
        ao_cmd.c \
        ao_exti_stm32f4.c \
        ao_usart_stm32f4.c \
+       ao_usb_gen.c \
+       ao_usb_stm32f4.c \
        ao_led.c \
        ao_impure.c \
        $(SCHEME_SRCS)
@@ -72,7 +74,7 @@ ao_scheme_const.h: ao-scheme-make-const-big $(SCHEME_SCHEME)
 distclean:     clean
 
 clean:
-       rm -f *.o *.elf *.ihx
+       rm -f *.o *.elf *.ihx *.map
 
 install:
 
index ede7c05..ab3c034 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <ao.h>
 #include <ao_scheme.h>
+#include <ao_usb.h>
 
 static void scheme_cmd() {
        ao_scheme_read_eval_print(stdin, stdout, false);
@@ -44,9 +45,11 @@ void main(void)
 {
        ao_clock_init();
        ao_timer_init();
+       ao_task_init();
+
        ao_led_init();
        ao_usart_init();
-       ao_task_init();
+       ao_usb_init();
        ao_cmd_init();
        ao_cmd_register(scheme_cmds);
        ao_start_scheduler();
index e6dcea8..6a18d59 100644 (file)
 #define AO_HSE         8000000 /* fed from st/link processor */
 #define AO_HSE_BYPASS  1       /* no xtal, directly fed */
 
-#define AO_PLL_M       4       /* down to 2MHz */
+#define AO_PLL_M       8       /* down to 1MHz */
 
-#define AO_PLL1_N      96      /* up to 192MHz */
+#define AO_PLL1_R      2       /* down to 96MHz */
+#define AO_PLL1_N      192     /* up to 192MHz */
 #define AO_PLL1_P      2       /* down to 96MHz */
 #define AO_PLL1_Q      4       /* down to 48MHz for USB and SDIO */
 
 #define AO_AHB_PRESCALER       1
 #define AO_RCC_CFGR_HPRE_DIV   STM_RCC_CFGR_HPRE_DIV_1
 
-#define AO_APB1_PRESCALER      1
-#define AO_RCC_CFGR_PPRE1_DIV  STM_RCC_CFGR_PPRE1_DIV_1
+#define AO_APB1_PRESCALER      2
+#define AO_RCC_CFGR_PPRE1_DIV  STM_RCC_CFGR_PPRE1_DIV_2
+
 #define AO_APB2_PRESCALER      1
 #define AO_RCC_CFGR_PPRE2_DIV  STM_RCC_CFGR_PPRE2_DIV_1
 
 #define DEBUG_THE_CLOCK        1
 
-#define HAS_USB                0
 #define HAS_BEEP       0
 
 #define B_USER_PORT    (&stm_gpioa)
@@ -54,6 +55,8 @@
 
 #define AO_LED_PANIC   LED_RED
 
+#define AO_CMD_LEN     128
+
 /* USART */
 
 #define HAS_SERIAL_6           1
@@ -68,4 +71,9 @@
 #define USE_SERIAL_6_FLOW      0
 #define USE_SERIAL_6_SW_FLOW   0
 
+/* USB */
+
+#define HAS_USB                        1
+#define USE_USB_STDIO          0
+
 #endif /* _AO_PINS_H_ */