USB device stack for NUCLEO-F042K6, NUCLEO-L152RE and NUCLEO-F103RB.

Dependents:   LPE-SEM01

Fork of L152RE_USBDevice by Norimasa Okamoto

I tried USB device using HAL_PCD.

/media/uploads/va009039/f042k6_usbdevice_vin.jpg

Nucleo-F042K6USB
PA11 (CN3-13)DM  (2 WHITE)
PA12 (CN3-5)DP  (3 GREEN)
GND (CN3-4)GND (5 BLACK)
VIN (CN4-1)VBUS(1 RED)

Examples

Import programF042K6_USBDevice_example

NUCLEO-F042K6 USBDevice example code

Import programL152RE_USBDevice_example

L152RE_USBDevice example code

Import programF042K6_Simple-CMSIS-DAP

cmsis-dap debug adapter

Import programL152RE_Simple-CMSIS-DAP

cmsis-dap debug adapter

Revision:
14:d495202c90f4
Parent:
11:eeb3cbbaa996
Child:
18:78bdbce94509
--- a/USBMSD/USBMSD.cpp	Tue Sep 10 15:14:55 2013 +0300
+++ b/USBMSD/USBMSD.cpp	Thu Sep 12 14:45:27 2013 +0100
@@ -67,8 +67,12 @@
     stage = READ_CBW;
     memset((void *)&cbw, 0, sizeof(CBW));
     memset((void *)&csw, 0, sizeof(CSW));
+    page = NULL;
 }
 
+USBMSD::~USBMSD() {
+    disconnect();
+}
 
 
 // Called in ISR context to process a class specific request
@@ -117,6 +121,7 @@
     if (BlockCount > 0) {
         BlockSize = MemorySize / BlockCount;
         if (BlockSize != 0) {
+            free(page);
             page = (uint8_t *)malloc(BlockSize * sizeof(uint8_t));
             if (page == NULL)
                 return false;
@@ -130,6 +135,12 @@
     return true;
 }
 
+void USBMSD::disconnect() {
+    //De-allocate MSD page size:
+    free(page);
+    page = NULL;
+    USBDevice::disconnect();
+}
 
 void USBMSD::reset() {
     stage = READ_CBW;