Closed AndKe closed 5 years ago
Create build_opt.h file in yr sketch dir with following content
-DENABLE_HWSERIAL2 -DENABLE_HWSERIAL3
Hi @AndKe
All U(S)ART from a STM32 are managed.
By default Arduino instantiate one named Serial
which is mapped to the one defined in the variant:
https://github.com/stm32duino/Arduino_Core_STM32/blob/2b723f85337a0684573de03a9d471f861f271435/variants/PILL_F103XX/variant.h#L111
For BP USART1 is used, so Serial1
is instantiate and mapped to Serial
. If you enable USB CDC to superseded Serial and kept Serial enabled then Serial1
is always instantiate and SerialUSB
is mapped on Serial
If you need more HW Serial then see: https://github.com/stm32duino/wiki/wiki/API#hardwareserial
Thank you.
I created build_opt.h with the single line -DENABLE_HWSERIAL2 -DENABLE_HWSERIAL3
very simple test code contain
Serial.begin(9600);
Serial2.begin(9600);
Serial3.begin(9600);
but I still get an error:
/home/andre/Arduino/arduino-1.8.10/arduino-builder -dump-prefs -logger=machine -hardware /home/andre/Arduino/arduino-1.8.10/hardware -hardware /home/andre/.arduino15/packages -hardware /home/andre/Arduino/projects/hardware -tools /home/andre/Arduino/arduino-1.8.10/tools-builder -tools /home/andre/Arduino/arduino-1.8.10/hardware/tools/avr -tools /home/andre/.arduino15/packages -built-in-libraries /home/andre/Arduino/arduino-1.8.10/libraries -libraries /home/andre/Arduino/projects/libraries -fqbn=STM32:stm32:GenF1:pnum=BLUEPILL_F103C8,upload_method=swdMethod,xserial=generic,usb=CDCgen,xusb=FS,opt=osstd,rtlib=nano -ide-version=10810 -build-path /tmp/arduino -warnings=default -build-cache /tmp/arduino_cache_732036 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arm-none-eabi-gcc.path=/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7 -prefs=runtime.tools.arm-none-eabi-gcc-8.2.1-1.7.path=/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7 -prefs=runtime.tools.STM32Tools.path=/home/andre/.arduino15/packages/STM32/tools/STM32Tools/1.3.1 -prefs=runtime.tools.STM32Tools-1.3.1.path=/home/andre/.arduino15/packages/STM32/tools/STM32Tools/1.3.1 -prefs=runtime.tools.CMSIS.path=/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1 -prefs=runtime.tools.CMSIS-5.5.1.path=/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1 -verbose /home/andre/Arduino/projects/temp-AnalogReadSerial/temp-AnalogReadSerial.ino
/home/andre/Arduino/arduino-1.8.10/arduino-builder -compile -logger=machine -hardware /home/andre/Arduino/arduino-1.8.10/hardware -hardware /home/andre/.arduino15/packages -hardware /home/andre/Arduino/projects/hardware -tools /home/andre/Arduino/arduino-1.8.10/tools-builder -tools /home/andre/Arduino/arduino-1.8.10/hardware/tools/avr -tools /home/andre/.arduino15/packages -built-in-libraries /home/andre/Arduino/arduino-1.8.10/libraries -libraries /home/andre/Arduino/projects/libraries -fqbn=STM32:stm32:GenF1:pnum=BLUEPILL_F103C8,upload_method=swdMethod,xserial=generic,usb=CDCgen,xusb=FS,opt=osstd,rtlib=nano -ide-version=10810 -build-path /tmp/arduino -warnings=default -build-cache /tmp/arduino_cache_732036 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arm-none-eabi-gcc.path=/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7 -prefs=runtime.tools.arm-none-eabi-gcc-8.2.1-1.7.path=/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7 -prefs=runtime.tools.STM32Tools.path=/home/andre/.arduino15/packages/STM32/tools/STM32Tools/1.3.1 -prefs=runtime.tools.STM32Tools-1.3.1.path=/home/andre/.arduino15/packages/STM32/tools/STM32Tools/1.3.1 -prefs=runtime.tools.CMSIS.path=/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1 -prefs=runtime.tools.CMSIS-5.5.1.path=/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1 -verbose /home/andre/Arduino/projects/temp-AnalogReadSerial/temp-AnalogReadSerial.ino
Using board 'GenF1' from platform in folder: /home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0
Using core 'arduino' from platform in folder: /home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0
bash -c "[ -f /home/andre/Arduino/projects/temp-AnalogReadSerial/build_opt.h ] || (mkdir -p /tmp/arduino/sketch && touch /tmp/arduino/sketch/build_opt.h)"
Detecting libraries used...
/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7/bin/arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb @/tmp/arduino/sketch/build_opt.h -c -Os -w -std=gnu++14 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -fno-use-cxa-atexit -I/home/andre/Arduino/projects/temp-AnalogReadSerial -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/avr -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32 -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/LL -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb/hid -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb/cdc -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/STM32F1xx_HAL_Driver/Inc/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/STM32F1xx_HAL_Driver/Src/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/STM32F1xx/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src -w -x c++ -E -CC -DSTM32F1xx -DARDUINO=10810 -DARDUINO_BLUEPILL_F103C8 -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"BLUEPILL_F103C8\"" -DSTM32F103xB -DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"BLUEPILL_F103C8\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_UART_MODULE_ENABLED -I/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1/CMSIS/Core/Include/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/variants/PILL_F103XX /tmp/arduino/sketch/temp-AnalogReadSerial.ino.cpp -o /dev/null
Generating function prototypes...
/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7/bin/arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb @/tmp/arduino/sketch/build_opt.h -c -Os -w -std=gnu++14 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -fno-use-cxa-atexit -I/home/andre/Arduino/projects/temp-AnalogReadSerial -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/avr -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32 -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/LL -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb/hid -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb/cdc -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/STM32F1xx_HAL_Driver/Inc/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/STM32F1xx_HAL_Driver/Src/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/STM32F1xx/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src -w -x c++ -E -CC -DSTM32F1xx -DARDUINO=10810 -DARDUINO_BLUEPILL_F103C8 -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"BLUEPILL_F103C8\"" -DSTM32F103xB -DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"BLUEPILL_F103C8\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_UART_MODULE_ENABLED -I/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1/CMSIS/Core/Include/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/variants/PILL_F103XX /tmp/arduino/sketch/temp-AnalogReadSerial.ino.cpp -o /tmp/arduino/preproc/ctags_target_for_gcc_minus_e.cpp
/home/andre/Arduino/arduino-1.8.10/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7/bin/arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb @/tmp/arduino/sketch/build_opt.h -c -Os -std=gnu++14 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -fno-use-cxa-atexit -MMD -I/home/andre/Arduino/projects/temp-AnalogReadSerial -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/avr -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32 -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/LL -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb/hid -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino/stm32/usb/cdc -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/STM32F1xx_HAL_Driver/Inc/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/STM32F1xx_HAL_Driver/Src/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/STM32F1xx/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src -DSTM32F1xx -DARDUINO=10810 -DARDUINO_BLUEPILL_F103C8 -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"BLUEPILL_F103C8\"" -DSTM32F103xB -DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"BLUEPILL_F103C8\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_UART_MODULE_ENABLED -I/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1/CMSIS/Core/Include/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/system/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/ -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/cores/arduino -I/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/variants/PILL_F103XX /tmp/arduino/sketch/temp-AnalogReadSerial.ino.cpp -o /tmp/arduino/sketch/temp-AnalogReadSerial.ino.cpp.o
Compiling libraries...
Compiling core...
Using previously compiled file: /tmp/arduino/core/PeripheralPins.c.o
Using previously compiled file: /tmp/arduino/core/variant.cpp.o
Using precompiled core: /tmp/arduino_cache_732036/core/core_d2d4f59cd5ddb04efe7cc8993937479a.a
Linking everything together...
/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7/bin/arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Os --specs=nano.specs -Wl,--defsym=LD_FLASH_OFFSET=0 -Wl,--defsym=LD_MAX_SIZE=65536 -Wl,--defsym=LD_MAX_DATA_SIZE=20480 -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -T/home/andre/.arduino15/packages/STM32/hardware/stm32/1.7.0/variants/PILL_F103XX/ldscript.ld -Wl,-Map,/tmp/arduino/temp-AnalogReadSerial.ino.map -L/home/andre/.arduino15/packages/STM32/tools/CMSIS/5.5.1/CMSIS/DSP/Lib/GCC/ -larm_cortexM3l_math -o /tmp/arduino/temp-AnalogReadSerial.ino.elf -L/tmp/arduino -Wl,--start-group /tmp/arduino/sketch/temp-AnalogReadSerial.ino.cpp.o /tmp/arduino/core/PeripheralPins.c.o /tmp/arduino/core/variant.cpp.o -Wl,--whole-archive /tmp/arduino_cache_732036/core/core_d2d4f59cd5ddb04efe7cc8993937479a.a -Wl,--no-whole-archive -lc -Wl,--end-group -lm -lgcc -lstdc++
/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: /tmp/arduino/sketch/temp-AnalogReadSerial.ino.cpp.o: in function `setup':
temp-AnalogReadSerial.ino.cpp:(.text.setup+0x2c): undefined reference to `Serial2'
/home/andre/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/8.2.1-1.7/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: temp-AnalogReadSerial.ino.cpp:(.text.setup+0x30): undefined reference to `Serial3'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Generic STM32F1 series.
BTW: I absolutely LOVE that you already added a half-duplex mode. Is inverted mode possible too ?
I've just tested and it works.
Regarding your log:
Using previously compiled file:
As it is specified in the wiki for build_opt.h, if you already build before add it then it is ignored.
Close and reopen Arduino IDE.
I am embarrassed, but happy. - thanks for the swift help
I see option for Serial and Serial1 , yet a BluePill should have three USARTs - what is going on here ? I wish there were a spreadsheed/table that shows supported features of different ST's ?