From 0721daaed79465da1f8320e82be6a4546643861d Mon Sep 17 00:00:00 2001 From: Rafael Silva Date: Fri, 26 Feb 2021 18:47:17 +0000 Subject: [PATCH] stm32f1: usb: init usb ios, usb stack, and run usb stack task Signed-off-by: Rafael Silva --- src/targets/stm32f1-generic/main.c | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/targets/stm32f1-generic/main.c b/src/targets/stm32f1-generic/main.c index 3734df01..99c39b67 100644 --- a/src/targets/stm32f1-generic/main.c +++ b/src/targets/stm32f1-generic/main.c @@ -6,8 +6,28 @@ #include #include "platform/stm32f1/flash.h" +#include "platform/stm32f1/gpio.h" #include "platform/stm32f1/rcc.h" #include "platform/stm32f1/systick.h" +#include "platform/stm32f1/usb.h" + +#include "util/data.h" +#include "util/types.h" + +#define CFG_TUSB_CONFIG_FILE "targets/stm32f1-generic/tusb_config.h" +#include "tusb.h" + +#define OI_MOUSE_REPORT_ID 0x01 + +struct output_report { + u8 id; + s8 x; + s8 y; + s8 wheel; + u8 button1 : 1; + u8 button2 : 1; + u8 button3 : 1; +} __attribute__((__packed__)); int main() { @@ -16,4 +36,24 @@ int main() rcc_init(EXTERNAL_CLOCK_VALUE); systick_init(); + + struct gpio_config_t gpio_config; + struct gpio_pin_t usb_dm_io = {.port = GPIO_PORT_A, .pin = 11}; + struct gpio_pin_t usb_dp_io = {.port = GPIO_PORT_A, .pin = 12}; + struct gpio_pin_t usb_dp_pu_io = USB_DP_PU_IO; + + gpio_init_config(&gpio_config); + + gpio_setup_pin(&gpio_config, usb_dm_io, GPIO_MODE_INPUT | GPIO_CNF_INPUT_FLOATING, 0); /* USB DM */ + gpio_setup_pin(&gpio_config, usb_dp_io, GPIO_MODE_INPUT | GPIO_CNF_INPUT_FLOATING, 0); /* USB DP */ + gpio_setup_pin( + &gpio_config, usb_dp_pu_io, GPIO_MODE_OUTPUT_50MHZ | GPIO_CNF_OUTPUT_GENERAL_PUSH_PULL, 0); /* USB DP PU */ + + gpio_apply_config(gpio_config); + + usb_init(); + + for (;;) { + tud_task(); + } }