Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/flipperdevices/libusb_stm32.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry <dmitrystu@gmail.com>2017-11-30 21:08:20 +0300
committerDmitry <dmitrystu@gmail.com>2017-11-30 21:09:20 +0300
commitf911521140dc7a3f647afd48ae21cb752c2dfad9 (patch)
tree93cc2681a11afd0899d5727f9edc486a70c36eef
parentb8b118164bcacad4eb8ba3bd625a5b45e0f23a52 (diff)
test: add interrupt based demo
closes #8
-rw-r--r--demo/cdc_loop.c37
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