Skip to content

Commit b83969b

Browse files
authored
Merge pull request #388 from fpistm/USB
[USB] Generic implementation providing HID composite (Mouse and Keyboard) and CDC in FS/HS
2 parents d555758 + eabb1b9 commit b83969b

File tree

202 files changed

+22098
-21241
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

202 files changed

+22098
-21241
lines changed

Diff for: License.md

+6-12
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Note: most license information is available on top of each source file
1313
* system/Drivers/ subfolders include the STMicroelectronics HAL Drivers and CMSIS
1414
ST device.
1515

16-
[MCD-ST Liberty SW License](#mcd-st-liberty-sw-license) is used for:
16+
[Ultimate Liberty License](#Ultimate-Liberty-License) is used for:
1717
* system/Middlewares/STM32_USB_*_Library/ folders
1818

1919
[Apache License](#apache-license) is used for:
@@ -558,18 +558,12 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
558558
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
559559

560560
-------------------------------------------------------------------------------
561-
## MCD-ST Liberty SW License
561+
## Ultimate Liberty License
562562

563-
Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may
564-
not use this package except in compliance with the License. You may obtain a
565-
copy of the License at:
566-
567-
http://www.st.com/software_license_agreement_liberty_v2
568-
569-
Unless required by applicable law or agreed to in writing, software distributed
570-
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
571-
CONDITIONS OF ANY KIND, either express or implied. See the License for the
572-
specific language governing permissions and limitations under the License.
563+
This software component is licensed by ST under Ultimate Liberty license
564+
SLA0044, the "License"; You may not use this file except in compliance with
565+
the License. You may obtain a copy of the License at:
566+
http://www.st.com/SLA0044
573567

574568
-------------------------------------------------------------------------------
575569
## Apache License

Diff for: boards.txt

+74-61
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
menu.pnum=Board part number
44

55
menu.xserial=Serial interface
6-
menu.usb=USB interface
6+
menu.usb=USB interface (if available)
77

88
menu.opt=Optimize
99
menu.rtlib=C Runtime Library
@@ -17,10 +17,6 @@ menu.ram=RAM Size
1717
Nucleo_144.name=Nucleo-144
1818

1919
Nucleo_144.build.vid=0x0483
20-
Nucleo_144.build.pid=0x5711
21-
Nucleo_144.vid.0=0x0483
22-
Nucleo_144.pid.0=0x5711
23-
2420
Nucleo_144.build.core=arduino
2521
Nucleo_144.build.board=Nucleo_144
2622
Nucleo_144.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -138,10 +134,6 @@ Nucleo_144.menu.upload_method.STLink.upload.tool=stlink_upload
138134
Nucleo_64.name=Nucleo-64
139135

140136
Nucleo_64.build.vid=0x0483
141-
Nucleo_64.build.pid=0x5711
142-
Nucleo_64.vid.0=0x0483
143-
Nucleo_64.pid.0=0x5711
144-
145137
Nucleo_64.build.core=arduino
146138
Nucleo_64.build.board=Nucleo_64
147139
Nucleo_64.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -317,10 +309,6 @@ Nucleo_64.menu.upload_method.STLink.upload.tool=stlink_upload
317309
Nucleo_32.name=Nucleo-32
318310

319311
Nucleo_32.build.vid=0x0483
320-
Nucleo_32.build.pid=0x5711
321-
Nucleo_32.vid.0=0x0483
322-
Nucleo_32.pid.0=0x5711
323-
324312
Nucleo_32.build.core=arduino
325313
Nucleo_32.build.board=Nucleo_32
326314
Nucleo_32.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -391,10 +379,6 @@ Nucleo_32.menu.upload_method.STLink.upload.tool=stlink_upload
391379
Disco.name=Discovery
392380

393381
Disco.build.vid=0x0483
394-
Disco.build.pid=0x5711
395-
Disco.vid.0=0x0483
396-
Disco.pid.0=0x5711
397-
398382
Disco.build.core=arduino
399383
Disco.build.board=Disco
400384
Disco.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -523,11 +507,7 @@ GenF0.menu.upload_method.serialMethod.upload.tool=serial_upload
523507
# Generic F103
524508
GenF103.name=Generic STM32F103 series
525509

526-
GenF103.build.vid=0x1EAF
527-
GenF103.build.pid=0x0004
528-
GenF103.vid.0=0x1EAF
529-
GenF103.pid.0=0x0004
530-
510+
GenF103.build.vid=0x0483
531511
GenF103.build.core=arduino
532512
GenF103.build.board=GenF103
533513
GenF103.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -568,11 +548,7 @@ GenF103.menu.upload_method.bmpMethod.upload.tool=bmp_upload
568548

569549
GenF4.name=Generic STM32F4 series
570550

571-
GenF4.build.vid=0x1EAF
572-
GenF4.build.pid=0x0004
573-
GenF4.vid.0=0x1EAF
574-
GenF4.pid.0=0x0004
575-
551+
GenF4.build.vid=0x0483
576552
GenF4.build.core=arduino
577553
GenF4.build.board=GenF4
578554
GenF4.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -633,11 +609,7 @@ GenF4.menu.upload_method.bmpMethod.upload.tool=bmp_upload
633609
# Maple
634610
Maple.name=Maple series
635611

636-
Maple.build.vid=0x1EAF
637-
Maple.build.pid=0x0004
638-
Maple.vid.0=0x1EAF
639-
Maple.pid.0=0x0004
640-
612+
Maple.build.vid=0x0483
641613
Maple.build.core=arduino
642614
Maple.build.board=Maple
643615
Maple.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -669,10 +641,6 @@ Maple.menu.upload_method.serialMethod.upload.tool=serial_upload
669641
RAK.name=RAKWireless
670642

671643
RAK.build.vid=0x0483
672-
RAK.build.pid=0x5711
673-
RAK.vid.0=0x0483
674-
RAK.pid.0=0x5711
675-
676644
RAK.build.core=arduino
677645
RAK.build.board=RAK
678646
RAK.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -711,10 +679,6 @@ RAK.menu.upload_method.STLink.upload.tool=stlink_upload
711679
3dprinter.name=3D printer boards
712680

713681
3dprinter.build.vid=0x0483
714-
3dprinter.build.pid=0x5711
715-
3dprinter.vid.0=0x0483
716-
3dprinter.pid.0=0x5711
717-
718682
3dprinter.build.core=arduino
719683
3dprinter.build.board=3dprinter
720684
3dprinter.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
@@ -744,11 +708,6 @@ RAK.menu.upload_method.STLink.upload.tool=stlink_upload
744708
3dprinter.menu.pnum.REMRAM_V1.build.variant=REMRAM_V1
745709
3dprinter.menu.pnum.REMRAM_V1.build.cmsis_lib_gcc=arm_cortexM7l_math
746710

747-
# Virtual COM port
748-
#3dprinter.menu.usb.none=None
749-
#3dprinter.menu.usb.CDC=CDC
750-
#3dprinter.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
751-
752711
# Upload menu
753712
3dprinter.menu.upload_method.STLinkMethod=STLink
754713
3dprinter.menu.upload_method.STLinkMethod.upload.protocol=STLink
@@ -822,28 +781,82 @@ RAK.menu.xserial.disabled.build.xSerial=
822781

823782
# USB connectivity
824783
Nucleo_144.menu.usb.none=None
825-
Nucleo_144.menu.usb.HID=HID keyboard and mouse support (if available)
826-
Nucleo_144.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
827-
#Nucleo_144.menu.usb.CDC=CDC (if available)
828-
#Nucleo_144.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
784+
Nucleo_144.menu.usb.none=None
785+
Nucleo_144.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
786+
Nucleo_144.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
787+
Nucleo_144.menu.usb.HIDHS=HID keyboard and mouse support High Speed
788+
Nucleo_144.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
789+
Nucleo_144.menu.usb.CDCFS=CDC Full Speed
790+
Nucleo_144.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
791+
Nucleo_144.menu.usb.CDCHS=CDC High Speed
792+
Nucleo_144.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
829793

830794
Nucleo_64.menu.usb.none=None
831-
Nucleo_64.menu.usb.HID=HID keyboard and mouse support (if available)
832-
Nucleo_64.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
833-
#Nucleo_64.menu.usb.CDC=CDC (if available)
834-
#Nucleo_64.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
795+
Nucleo_64.menu.usb.none=None
796+
Nucleo_64.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
797+
Nucleo_64.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
798+
Nucleo_64.menu.usb.HIDHS=HID keyboard and mouse support High Speed
799+
Nucleo_64.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
800+
Nucleo_64.menu.usb.CDCFS=CDC Full Speed
801+
Nucleo_64.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
802+
Nucleo_64.menu.usb.CDCHS=CDC High Speed
803+
Nucleo_64.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
835804

836805
Nucleo_32.menu.usb.none=None
837-
Nucleo_32.menu.usb.HID=HID keyboard and mouse support (if available)
838-
Nucleo_32.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
839-
#Nucleo_32.menu.usb.CDC=CDC (if available)
840-
#Nucleo_32.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
806+
Nucleo_32.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
807+
Nucleo_32.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
808+
Nucleo_32.menu.usb.HIDHS=HID keyboard and mouse support High Speed
809+
Nucleo_32.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
810+
Nucleo_32.menu.usb.CDCFS=CDC Full Speed
811+
Nucleo_32.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
812+
Nucleo_32.menu.usb.CDCHS=CDC High Speed
813+
Nucleo_32.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
841814

842815
Disco.menu.usb.none=None
843-
Disco.menu.usb.HID=HID keyboard and mouse support (if available)
844-
Disco.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
845-
#Disco.menu.usb.CDC=CDC (if available)
846-
#Disco.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
816+
Disco.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
817+
Disco.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
818+
Disco.menu.usb.HIDHS=HID keyboard and mouse support High Speed
819+
Disco.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
820+
Disco.menu.usb.CDCFS=CDC Full Speed
821+
Disco.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
822+
Disco.menu.usb.CDCHS=CDC High Speed
823+
Disco.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
824+
825+
GenF103.menu.usb.none=None
826+
GenF103.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
827+
GenF103.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
828+
GenF103.menu.usb.HIDHS=HID keyboard and mouse support High Speed
829+
GenF103.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
830+
GenF103.menu.usb.CDCFS=CDC Full Speed
831+
GenF103.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
832+
GenF103.menu.usb.CDCHS=CDC High Speed
833+
GenF103.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
834+
835+
GenF4.menu.usb.none=None
836+
GenF4.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
837+
GenF4.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
838+
GenF4.menu.usb.HIDHS=HID keyboard and mouse support High Speed
839+
GenF4.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
840+
GenF4.menu.usb.CDCFS=CDC Full Speed
841+
GenF4.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
842+
GenF4.menu.usb.CDCHS=CDC High Speed
843+
GenF4.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
844+
845+
Maple.menu.usb.none=None
846+
Maple.menu.usb.HIDFS=HID keyboard and mouse support Full Speed
847+
Maple.menu.usb.HIDFS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
848+
Maple.menu.usb.HIDHS=HID keyboard and mouse support High Speed
849+
Maple.menu.usb.HIDHS.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE -DUSE_USB_HS
850+
Maple.menu.usb.CDCFS=CDC Full Speed
851+
Maple.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
852+
Maple.menu.usb.CDCHS=CDC High Speed
853+
Maple.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
854+
855+
3dprinter.menu.usb.none=None
856+
3dprinter.menu.usb.CDCFS=CDC Full Speed
857+
3dprinter.menu.usb.CDCFS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
858+
3dprinter.menu.usb.CDCHS=CDC High Speed
859+
3dprinter.menu.usb.CDCHS.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_HS
847860

848861
# Optimizations
849862
Nucleo_144.menu.opt.osstd=Smallest (-Os default)

Diff for: cores/arduino/HardwareSerial.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ HardwareSerial::HardwareSerial(void* peripheral)
166166
// If Serial is defined in variant set
167167
// the Rx/Tx pins for com port if defined
168168
#if defined(Serial) && defined(PIN_SERIAL_RX) && defined(PIN_SERIAL_TX)
169-
if (this == &Serial) {
169+
if ((void*)this == (void*)&Serial) {
170170
setRx(PIN_SERIAL_RX);
171171
setTx(PIN_SERIAL_TX);
172172
} else

0 commit comments

Comments
 (0)