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:
31:5bf05f9b3c7b
Parent:
25:7c72828865f3
Child:
33:f85ada5a4cef
--- a/USBDevice/USBHAL_STM32F4.cpp	Wed Aug 20 13:15:20 2014 +0100
+++ b/USBDevice/USBHAL_STM32F4.cpp	Thu Aug 21 15:00:37 2014 +0100
@@ -16,7 +16,7 @@
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
 
-#if defined(TARGET_STM32F4XX)
+#if defined(TARGET_STM32F4)
 
 #include "USBHAL.h"
 #include "USBRegs_STM32.h"
@@ -48,6 +48,13 @@
     // Enable power and clocking
     RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
 
+#if defined(TARGET_STM32F407VG)
+    pin_function(PA_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS));
+    pin_function(PA_9, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLDOWN, GPIO_AF10_OTG_FS));
+    pin_function(PA_10, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS));
+    pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS));
+    pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS));
+#else
     pin_function(PA_8, STM_PIN_DATA(2, 10));
     pin_function(PA_9, STM_PIN_DATA(0, 0));
     pin_function(PA_10, STM_PIN_DATA(2, 10));
@@ -61,6 +68,7 @@
 
     // Set VBUS pin to open drain
     pin_mode(PA_9, OpenDrain);
+#endif
 
     RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN;