diff options
author | Dmitry <dmitrystu@gmail.com> | 2017-11-30 21:08:20 +0300 |
---|---|---|
committer | Dmitry <dmitrystu@gmail.com> | 2017-11-30 21:09:20 +0300 |
commit | f911521140dc7a3f647afd48ae21cb752c2dfad9 (patch) | |
tree | 93cc2681a11afd0899d5727f9edc486a70c36eef | |
parent | b8b118164bcacad4eb8ba3bd625a5b45e0f23a52 (diff) |
test: add interrupt based demo
closes #8
-rw-r--r-- | demo/cdc_loop.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/demo/cdc_loop.c b/demo/cdc_loop.c index 54b712e..454a3ff 100644 --- a/demo/cdc_loop.c +++ b/demo/cdc_loop.c @@ -16,6 +16,7 @@ #include <stdint.h> #include <stdbool.h> #include <string.h> +#include "stm32.h" #include "usb.h" #include "usb_cdc.h" @@ -27,6 +28,8 @@ #define CDC_NTF_SZ 0x08 #define CDC_LOOPBACK +//#define CDC_USE_IRQ /* uncomment to build interrupt-based demo */ + struct cdc_config { struct usb_config_descriptor config; struct usb_interface_descriptor comm; @@ -281,11 +284,43 @@ static void cdc_init_usbd(void) { usbd_reg_descr(&udev, cdc_getdesc); } +#if defined(CDC_USE_IRQ) +#if defined(STM32L052xx) + #define USB_HANDLER USB_IRQHandler + #define USB_NVIC_IRQ USB_IRQn +#elif defined(STM32L100xC) + #define USB_HANDLER USB_LP_IRQHandler + #define USB_NVIC_IRQ USB_LP_IRQn +#elif defined(STM32L476xx) + #define USB_HANDLER OTG_FS_IRQHandler + #define USB_NVIC_IRQ OTG_FS_IRQn +#elif defined(STM32F103x6) + #define USB_HANDLER USB_LP_CAN1_RX0_IRQHandler + #define USB_NVIC_IRQ USB_LP_CAN1_RX0_IRQn +#else + #error Not supported +#endif + +void USB_HANDLER(void) { + usbd_poll(&udev); +} + void main(void) { cdc_init_usbd(); + NVIC_EnableIRQ(USB_NVIC_IRQ); usbd_enable(&udev, true); usbd_connect(&udev, true); while(1) { - usbd_poll(&udev); + __WFI(); } } +#else +void main(void) { + cdc_init_usbd(); + usbd_enable(&udev, true); + usbd_connect(&udev, true); + while(1) { + usbd_poll(&udev); + } +} +#endif |