Skip to content

Commit fa451a0

Browse files
committed
Merge pull request #119 from spectaclelabs/USBDevice-STM32F4
Add initial USB Device support for STM32F4
2 parents 697acd3 + 0438e70 commit fa451a0

File tree

5 files changed

+618
-1
lines changed

5 files changed

+618
-1
lines changed

libraries/USBDevice/USBDevice/USBEndpoints.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ typedef enum {
4343
#include "USBEndpoints_LPC11U.h"
4444
#elif defined(TARGET_KL25Z)
4545
#include "USBEndpoints_KL25Z.h"
46+
#elif defined (TARGET_STM32F4XX)
47+
#include "USBEndpoints_STM32F4.h"
4648
#else
4749
#error "Unknown target type"
4850
#endif
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/* Copyright (c) 2010-2011 mbed.org, MIT License
2+
*
3+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
4+
* and associated documentation files (the "Software"), to deal in the Software without
5+
* restriction, including without limitation the rights to use, copy, modify, merge, publish,
6+
* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7+
* Software is furnished to do so, subject to the following conditions:
8+
*
9+
* The above copyright notice and this permission notice shall be included in all copies or
10+
* substantial portions of the Software.
11+
*
12+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
13+
* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
14+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
15+
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17+
*/
18+
19+
#define NUMBER_OF_LOGICAL_ENDPOINTS (4)
20+
#define NUMBER_OF_PHYSICAL_ENDPOINTS (NUMBER_OF_LOGICAL_ENDPOINTS * 2)
21+
22+
/* Define physical endpoint numbers */
23+
24+
/* Endpoint No. Type(s) MaxPacket DoubleBuffer */
25+
/* ---------------- ------------ ---------- --- */
26+
#define EP0OUT (0) /* Control 64 No */
27+
#define EP0IN (1) /* Control 64 No */
28+
#define EP1OUT (2) /* Int/Bulk/Iso 64/64/1023 Yes */
29+
#define EP1IN (3) /* Int/Bulk/Iso 64/64/1023 Yes */
30+
#define EP2OUT (4) /* Int/Bulk/Iso 64/64/1023 Yes */
31+
#define EP2IN (5) /* Int/Bulk/Iso 64/64/1023 Yes */
32+
#define EP3OUT (6) /* Int/Bulk/Iso 64/64/1023 Yes */
33+
#define EP3IN (7) /* Int/Bulk/Iso 64/64/1023 Yes */
34+
35+
/* Maximum Packet sizes */
36+
37+
#define MAX_PACKET_SIZE_EP0 (64)
38+
#define MAX_PACKET_SIZE_EP1 (64) /* Int/Bulk */
39+
#define MAX_PACKET_SIZE_EP2 (64) /* Int/Bulk */
40+
#define MAX_PACKET_SIZE_EP3 (64) /* Int/Bulk */
41+
42+
#define MAX_PACKET_SIZE_EP1_ISO (1023) /* Isochronous */
43+
#define MAX_PACKET_SIZE_EP2_ISO (1023) /* Isochronous */
44+
#define MAX_PACKET_SIZE_EP3_ISO (1023) /* Isochronous */
45+
46+
/* Generic endpoints - intended to be portable accross devices */
47+
/* and be suitable for simple USB devices. */
48+
49+
/* Bulk endpoint */
50+
#define EPBULK_OUT (EP2OUT)
51+
#define EPBULK_IN (EP2IN)
52+
/* Interrupt endpoint */
53+
#define EPINT_OUT (EP1OUT)
54+
#define EPINT_IN (EP1IN)
55+
/* Isochronous endpoint */
56+
#define EPISO_OUT (EP3OUT)
57+
#define EPISO_IN (EP3IN)
58+
59+
#define MAX_PACKET_SIZE_EPBULK (MAX_PACKET_SIZE_EP2)
60+
#define MAX_PACKET_SIZE_EPINT (MAX_PACKET_SIZE_EP1)
61+
#define MAX_PACKET_SIZE_EPISO (MAX_PACKET_SIZE_EP3_ISO)

libraries/USBDevice/USBDevice/USBHAL.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ class USBHAL {
7474
virtual bool EP2_IN_callback(){return false;};
7575
virtual bool EP3_OUT_callback(){return false;};
7676
virtual bool EP3_IN_callback(){return false;};
77+
#if !defined(TARGET_STM32F4)
7778
virtual bool EP4_OUT_callback(){return false;};
7879
virtual bool EP4_IN_callback(){return false;};
79-
8080
#if !defined(TARGET_LPC11U24)
8181
virtual bool EP5_OUT_callback(){return false;};
8282
virtual bool EP5_IN_callback(){return false;};
@@ -101,6 +101,7 @@ class USBHAL {
101101
virtual bool EP15_OUT_callback(){return false;};
102102
virtual bool EP15_IN_callback(){return false;};
103103
#endif
104+
#endif
104105

105106
private:
106107
void usbisr(void);
@@ -109,6 +110,8 @@ class USBHAL {
109110

110111
#if defined(TARGET_LPC11U24)
111112
bool (USBHAL::*epCallback[10 - 2])(void);
113+
#elif defined(TARGET_STM32F4XX)
114+
bool (USBHAL::*epCallback[8 - 2])(void);
112115
#else
113116
bool (USBHAL::*epCallback[32 - 2])(void);
114117
#endif

0 commit comments

Comments
 (0)