Skip to content

Commit a628041

Browse files
committed
USB CDC Support using USBSerial library. Currently only for Armed board.
1 parent f040c55 commit a628041

30 files changed

+3705
-1201
lines changed

.vscode/settings.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"files.associations": {
3+
"usbd_ctlreq.h": "c",
4+
"usbd_core.h": "c",
5+
"usb_device.h": "c",
6+
"usbd_desc.h": "c",
7+
"usbd_cdc.h": "c",
8+
"usb_interface.h": "c"
9+
}
10+
}

boards.txt

+94-32
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_interface=USB interface
77

88
menu.opt=Optimize
99
menu.upload_method=Upload method
@@ -15,9 +15,9 @@ menu.flash=Flash Memory Size
1515
Nucleo_144.name=Nucleo-144
1616

1717
Nucleo_144.build.vid=0x0483
18-
Nucleo_144.build.pid=0x5711
18+
Nucleo_144.build.pid=0x5740
1919
Nucleo_144.vid.0=0x0483
20-
Nucleo_144.pid.0=0x5711
20+
Nucleo_144.pid.0=0x5740
2121

2222
Nucleo_144.build.core=arduino
2323
Nucleo_144.build.board=Nucleo_144
@@ -64,9 +64,9 @@ Nucleo_144.menu.upload_method.STLink.upload.tool=stlink_upload
6464
Nucleo_64.name=Nucleo-64
6565

6666
Nucleo_64.build.vid=0x0483
67-
Nucleo_64.build.pid=0x5711
67+
Nucleo_64.build.pid=0x5740
6868
Nucleo_64.vid.0=0x0483
69-
Nucleo_64.pid.0=0x5711
69+
Nucleo_64.pid.0=0x5740
7070

7171
Nucleo_64.build.core=arduino
7272
Nucleo_64.build.board=Nucleo_64
@@ -230,9 +230,9 @@ Nucleo_64.menu.upload_method.STLink.upload.tool=stlink_upload
230230
Nucleo_32.name=Nucleo-32
231231

232232
Nucleo_32.build.vid=0x0483
233-
Nucleo_32.build.pid=0x5711
233+
Nucleo_32.build.pid=0x5740
234234
Nucleo_32.vid.0=0x0483
235-
Nucleo_32.pid.0=0x5711
235+
Nucleo_32.pid.0=0x5740
236236

237237
Nucleo_32.build.core=arduino
238238
Nucleo_32.build.board=Nucleo_32
@@ -292,9 +292,9 @@ Nucleo_32.menu.upload_method.STLink.upload.tool=stlink_upload
292292
Disco.name=Discovery
293293

294294
Disco.build.vid=0x0483
295-
Disco.build.pid=0x5711
295+
Disco.build.pid=0x5740
296296
Disco.vid.0=0x0483
297-
Disco.pid.0=0x5711
297+
Disco.pid.0=0x5740
298298

299299
Disco.build.core=arduino
300300
Disco.build.board=Disco
@@ -469,6 +469,36 @@ Maple.menu.upload_method.serialMethod=Serial
469469
Maple.menu.upload_method.serialMethod.upload.protocol=maple_serial
470470
Maple.menu.upload_method.serialMethod.upload.tool=serial_upload
471471

472+
################################################################################
473+
# Armed boards
474+
475+
Armed.name=Armed Series
476+
477+
Armed.build.vid=0x0483
478+
Armed.build.pid=0x5740
479+
Armed.vid.0=0x0483
480+
Armed.pid.0=0x5740
481+
482+
Armed.build.core=arduino
483+
Armed.build.board=Armed
484+
Armed.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
485+
486+
# Armed board
487+
# Support: USB CDC
488+
Armed.menu.pnum.Armed_V1=Armed V1 board
489+
Armed.menu.pnum.Armed_V1.upload.maximum_size=1048576
490+
Armed.menu.pnum.Armed_V1.upload.maximum_data_size=196608
491+
Armed.menu.pnum.Armed_V1.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
492+
Armed.menu.pnum.Armed_V1.build.board=Armed_V1
493+
Armed.menu.pnum.Armed_V1.build.series=STM32F4xx
494+
Armed.menu.pnum.Armed_V1.build.product_line=STM32F407xx
495+
Armed.menu.pnum.Armed_V1.build.variant=Armed_V1
496+
Armed.menu.pnum.Armed_V1.build.cmsis_lib_gcc=arm_cortexM4l_math
497+
498+
# Upload menu
499+
Armed.menu.upload_method.STLink=STLink
500+
Armed.menu.upload_method.STLink.upload.protocol=STLink
501+
Armed.menu.upload_method.STLink.upload.tool=stlink_upload
472502

473503
################################################################################
474504
# Serialx activation
@@ -520,30 +550,34 @@ Maple.menu.xserial.all.build.xSerial=-DALL_HWSERIAL
520550
Maple.menu.xserial.third=Enable first third (USART1 to 3 if available)
521551
Maple.menu.xserial.third.build.xSerial=-DFIRST_THIRD_HWSERIAL
522552

553+
Armed.menu.xserial.generic=Generic Serial
554+
Armed.menu.xserial.none=No Serial
555+
Armed.menu.xserial.none.build.xSerial=-DNO_HWSERIAL
556+
Armed.menu.xserial.all=All (up to 10)
557+
Armed.menu.xserial.all.build.xSerial=-DALL_HWSERIAL
558+
Armed.menu.xserial.third=Enable first third (USART1 to 3 if available)
559+
Armed.menu.xserial.third.build.xSerial=-DFIRST_THIRD_HWSERIAL
560+
523561
# USB connectivity
524-
Nucleo_144.menu.usb.none=None
525-
Nucleo_144.menu.usb.HID=HID keyboard and mouse support (if available)
526-
Nucleo_144.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
527-
#Nucleo_144.menu.usb.CDC=CDC (if available)
528-
#Nucleo_144.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
529-
530-
Nucleo_64.menu.usb.none=None
531-
Nucleo_64.menu.usb.HID=HID keyboard and mouse support (if available)
532-
Nucleo_64.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
533-
#Nucleo_64.menu.usb.CDC=CDC (if available)
534-
#Nucleo_64.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
535-
536-
Nucleo_32.menu.usb.none=None
537-
Nucleo_32.menu.usb.HID=HID keyboard and mouse support (if available)
538-
Nucleo_32.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
539-
#Nucleo_32.menu.usb.CDC=CDC (if available)
540-
#Nucleo_32.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
541-
542-
Disco.menu.usb.none=None
543-
Disco.menu.usb.HID=HID keyboard and mouse support (if available)
544-
Disco.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
545-
#Disco.menu.usb.CDC=CDC (if available)
546-
#Disco.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DUSE_USB_FS
562+
Nucleo_144.menu.USB_interface.enable_usb=None
563+
Nucleo_144.menu.USB_interface.enable_usb_periph=Enable USB (if available)
564+
Nucleo_144.menu.USB_interface.enable_usb_periph.build.enable_usb={build.usb_flags}
565+
566+
Nucleo_64.menu.USB_interface.enable_USB=None
567+
Nucleo_64.menu.USB_interface.enable_usb_periph=Enable USB (if available)
568+
Nucleo_64.menu.USB_interface.enable_usb_periph.build.enable_usb={build.usb_flags}
569+
570+
Nucleo_32.menu.USB_interface.enable_USB=None
571+
Nucleo_32.menu.USB_interface.enable_usb_periph=Enable USB (if available)
572+
Nucleo_32.menu.USB_interface.enable_usb_periph.build.enable_usb={build.usb_flags}
573+
574+
Disco.menu.USB_interface.enable_USB=None
575+
Disco.menu.USB_interface.enable_usb_periph=Enable USB (if available)
576+
Disco.menu.USB_interface.enable_usb_periph.build.enable_usb={build.usb_flags}
577+
578+
Armed.menu.USB_interface.enable_USB=None
579+
Armed.menu.USB_interface.enable_usb_periph=Enable USB (if available)
580+
Armed.menu.USB_interface.enable_usb_periph.build.enable_usb={build.usb_flags}
547581

548582
# Optimizations
549583
Nucleo_144.menu.opt.osstd=Smallest (-Os default)
@@ -713,3 +747,31 @@ Maple.menu.opt.o3lto.build.flags.ldspecs=-flto
713747
Maple.menu.opt.ogstd=Debug (-g)
714748
Maple.menu.opt.ogstd.build.flags.optimize=-g -Og
715749
Maple.menu.opt.ogstd.build.flags.ldspecs=
750+
751+
Armed.menu.opt.osstd=Smallest (-Os default)
752+
Armed.menu.opt.osstd.build.flags.optimize=-Os
753+
Armed.menu.opt.osstd.build.flags.ldspecs=
754+
Armed.menu.opt.oslto=Smallest (-Os) with LTO
755+
Armed.menu.opt.oslto.build.flags.optimize=-Os -flto
756+
Armed.menu.opt.oslto.build.flags.ldspecs=-flto
757+
Armed.menu.opt.o1std=Fast (-O1)
758+
Armed.menu.opt.o1std.build.flags.optimize=-O1
759+
Armed.menu.opt.o1std.build.flags.ldspecs=
760+
Armed.menu.opt.o1lto=Fast (-O1) with LTO
761+
Armed.menu.opt.o1lto.build.flags.optimize=-O1 -flto
762+
Armed.menu.opt.o1lto.build.flags.ldspecs=-flto
763+
Armed.menu.opt.o2std=Faster (-O2)
764+
Armed.menu.opt.o2std.build.flags.optimize=-O2
765+
Armed.menu.opt.o2std.build.flags.ldspecs=
766+
Armed.menu.opt.o2lto=Faster (-O2) with LTO
767+
Armed.menu.opt.o2lto.build.flags.optimize=-O2 -flto
768+
Armed.menu.opt.o2lto.build.flags.ldspecs=-flto
769+
Armed.menu.opt.o3std=Fastest (-O3)
770+
Armed.menu.opt.o3std.build.flags.optimize=-O3
771+
Armed.menu.opt.o3std.build.flags.ldspecs=
772+
Armed.menu.opt.o3lto=Fastest (-O3) with LTO
773+
Armed.menu.opt.o3lto.build.flags.optimize=-O3 -flto
774+
Armed.menu.opt.o3lto.build.flags.ldspecs=-flto
775+
Armed.menu.opt.ogstd=Debug (-g)
776+
Armed.menu.opt.ogstd.build.flags.optimize=-g -Og
777+
Armed.menu.opt.ogstd.build.flags.ldspecs=

cores/arduino/board.h

-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ extern "C"{
2222
#include "twi.h"
2323
#include "uart.h"
2424
#include "uart_emul.h"
25-
#ifdef USBCON
26-
#include "usb_interface.h"
27-
#endif //USBCON
2825

2926
void init( void ) ;
3027
#ifdef __cplusplus

cores/arduino/main.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ int main( void )
5454
{
5555
initVariant();
5656

57-
#if defined(USBCON)
58-
usbd_interface_init();
59-
#endif
60-
6157
setup();
6258

6359
for (;;)

cores/arduino/stm32/timer.c

+11
Original file line numberDiff line numberDiff line change
@@ -1014,6 +1014,17 @@ void attachIntHandle(stimer_t *obj, void (*irqHandle)(stimer_t *))
10141014
obj->irqHandle = irqHandle;
10151015
}
10161016

1017+
/**
1018+
* @brief Attached an interrupt handler
1019+
* @param htim : TIM handle
1020+
* @param irqHandle : interrupt handler
1021+
* @retval none
1022+
*/
1023+
void timer_attach_interrupt_handle(TIM_HandleTypeDef *htim, void (*irqHandle)(stimer_t *))
1024+
{
1025+
stimer_t *obj = get_timer_obj(htim);
1026+
obj->irqHandle = irqHandle;
1027+
}
10171028

10181029
/******************************************************************************/
10191030
/* TIMx IRQ HANDLER */

cores/arduino/stm32/timer.h

+1
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ struct timer_s{
180180

181181
void timer_enable_clock(TIM_HandleTypeDef *htim);
182182
void timer_disable_clock(TIM_HandleTypeDef *htim);
183+
void timer_attach_interrupt_handle(TIM_HandleTypeDef *htim, void (*irqHandle)(stimer_t *));
183184

184185
void TimerHandleInit(stimer_t *obj, uint16_t period, uint16_t prescaler);
185186
void TimerHandleDeinit(stimer_t *obj);

0 commit comments

Comments
 (0)