Skip to content

Releases: stm32duino/Arduino_Core_STM32

Arduino Core for STM32 1.8.0

20 Dec 10:37
Compare
Choose a tag to compare

Github Releases (by Release)

This release includes:

Add support of:

HAL Drivers and CMSIS updated:

  • STM32F0xx HAL Drivers to v1.7.3
  • STM32F0xx CMSIS to v2.3.4
  • STM32F3xx HAL Drivers to v1.5.3
  • STM32F3xx CMSIS to v2.3.4
  • STM32F4xx HAL Drivers to v1.7.7
  • STM32F4xx CMSIS to v1.7.7 …
  • STM32WBxx HAL Drivers to v1.3.0
  • STM32WBxx CMSIS to v1.3.0

HAL Drivers and CMSIS added:

  • STM32MP1xx HAL Drivers v1.1.0
  • STM32MP1xx CMSIS v1.1.0

Middleware added:

  • OpenAMP v1.0.3

Core dependencies:

Enhancements/improvements:

  • Remove use of whole-archive (#677)
  • HardwareSerial support half-duplex See Wiki
  • CMSIS DSP support as built-in library. Include CMSIS_DSP.h allows to use DSP functions.
  • Support precompiled libraries as described in Arduino IDE 1.5: Library specification
  • Added the repeated-start feature in I2C driver (#590)
  • [SoftwareSerial] Add function to set interrupt priority
  • [HardwareTimer) Add methods to check if there's an IRQ handler
  • [NUCLEO_L073RZ] Enable USB clock
  • Add printf to Print class: Print:printf
  • Allow to enable HAL module only. See Wiki
  • [Wire] New begin method for late call configuration (#838)
  • Allow non contiguous analog pins definition

Fixes:

  • [USB] Fix EP0 STALL issue in STM32 USB Device library
  • [TIM] Fix TIM6_IRQn definition
  • [ADC] Fix ADC_InitTypeDef member for STM32F37xx
  • [I2C] Fix error management in Read/Write
  • [Nucleo-G071RB] Fix analog pin issue
  • Fix single-pin half-duplex in SoftwareSerial::send
  • [NUCLEO-H743ZI] Fix Analog pin mapping
  • [SPI] Fix prescaler at low baudrates (#794)
  • [ARMED_V1] Fix wrong NUM_DIGITAL_PINS value
  • [NUCLEO_L452RE] Fix PC1 pin number
  • [Nucleo-G431xx] Add new node name
  • Fix ADC_RESOLUTION, PWM_RESOLUTION and DACC_RESOLUTION usage

Plus several other fixes: See 1.7.0...1.8.0

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino 😉

Arduino Core for STM32 1.7.0

18 Oct 19:22
Compare
Choose a tag to compare

Github Releases (by Release)

This release includes:

Add support of:

Extend support

  • STM32F030F4 Demo board using 16MHz X-TAL or HSI.

HAL Drivers and CMSIS updated:

  • STM32F1xx HAL Drivers to v1.1.4 (USB related files reverted due to a regression)
  • STM32F1xx CMSIS to v4.3.1
  • STM32F2xx HAL Drivers to v1.2.3
  • STM32F2xx CMSIS to v2.2.2
  • STM32G0xx HAL Drivers to v1.3.0
  • STM32G0xx CMSIS to v1.3.0
  • STM32H7xx HAL Drivers to v1.6.0
  • STM32H7xx CMSIS to v1.6.0
  • STM32WBxx HAL Drivers to v1.2.0
  • STM32WBxx CMSIS to v1.2.0

HAL Drivers and CMSIS added:

  • STM32G4xx HAL Drivers v1.1.0
  • STM32G4xx CMSIS v1.1.0

Middleware updated:

  • STM32 USB Host library to v3.3.3
  • STM32 USB Device library to v2.5.3

Core dependencies:

  • Updates STM32 Tools 1.3.1

Enhancements/improvements:

  • [PinMap] Add WEAK attribute to PinMap arrays. See custom pinmap array wiki page.
  • Add HardwareTimer library. See wiki
  • [I2C] Harden error management
  • Allow F_CPU redefinition
  • [Time] delayMicroseconds() accuracy
  • Add SoftwareSerial built-in library
  • Allow not to have analog pin. If no analog pin required then NUM_ANALOG_INPUTS and NUM_ANALOG_FIRST could be not defined or set to respectively 0 and NUM_DIGITAL_PINS. Nevertheless, this kept ADC internal channels functional if HAL_ADC_MODULE_ENABLED still defined.
  • Update Nucleo H743ZI(2) variant to use HSE

Fixes:

  • [I2C] Compute timing properly. See i2c-timing wiki page.
  • Fix {build.mcu} definition then library can provide a precompiled library.
  • [Time] Fix ticks per ms value used to compute micros
  • [USB] Fix endpoints configurations

Plus several other fixes: See 1.6.1...1.7.0

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino 😉

Arduino Core for STM32 1.6.1

27 Jun 08:29
Compare
Choose a tag to compare

Github Releases (by Release)

This release includes:

Add support of:

Add support of RobotDyn BlackPill F303CC

Core dependencies:

  • Moved from arm-none-eabi-gcc 8-2018-q4-major to 8.2.1-1.7

Fix:

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

Arduino Core for STM32 1.6.0

17 Jun 16:19
Compare
Choose a tag to compare

Github Releases (by Release)

This release includes:

Add support of:

  • Nucleo H743ZI2
  • Nucleo G071RB
  • P-Nucleo WB55RG (No BLE support at this time)
  • Sparky V1
  • STEVAL-3DP001V1
  • VAkE v1.0

HAL Drivers and CMSIS updated:

  • STM32F0xx HAL Drivers to v1.7.2
  • STM32F4xx HAL Drivers to v1.7.6
  • STM32F4xx CMSIS to v2.6.3
  • STM32F7xx HAL Drivers to v1.2.7
  • STM32F7xx CMSIS to v1.2.4
  • STM32H7xx HAL Drivers to v1.5.0
  • STM32H7xx CMSIS to v1.5.0
  • STM32L0xx HAL Drivers to v1.10.2
  • STM32L1xx HAL Drivers to v1.4.0
  • STM32L1xx CMSIS to v2.3.0
  • STM32L4xx HAL Drivers to v1.10.0
  • STM32L4xx CMSIS to v1.5.1

HAL Drivers and CMSIS added:

  • STM32G0xx HAL Drivers v1.2.0
  • STM32G0xx CMSIS v1.2.0
  • STM32WBxx HAL Drivers v1.1.0
  • STM32WBxx CMSIS v1.1.0

Core dependencies:

Enhancements/improvements:

  • Introduce code formatting using Astyle 3.1:
  • Add STM32 core version. See Wiki
  • Code cleaning/hardening:
    • Clean useless legacy comments
    • Remove useless array for digital pins configured
    • Dynamically handle I2C, UART and Timer indexes
    • [USB HID] Harden init
    • [I2C] Harden init and save space
    • [UART] Save space and avoid loop to search the right serial_t obj
  • Several update for USB device from @makarenya and @ghent360
  • [RTC] Handle reset time (#266)
  • [DWT] Add API to enable DWT access
  • Use DWT cycle counter for delayMicroseconds()
  • [DISCO_L072CZ_LRWAN1] Enable USB clock
  • [Timer] Extend channels support (#477)
  • Support custom USBD_reenumerate (#500)
  • Re-evaluate interrupt priority values(#472). See Custom-definitions
  • Introduce STM32CubeProgrammer:
    • Replace STLink and Serial upload methods
    • Add DFU upload method
      Warning: user have to install the STM32CubeProgrammer manually, it is not provided by the STM32 tools package.
  • Review HAL configurations to add some enhancement and flexibility, see #518 and HAL configuration WiKi page
  • Add DTR toggling sequence support:
    • Enabled thanks: DTR_TOGGLING_SEQ
    • User can redefine its own hook by redefining: dtr_togglingHook(uint8_t *buf, uint32_t *len)
  • Maple bootloader support (legacy) thanks @BennehBoy and @Serasidis
  • Add dummy analogReference() for compatibility
  • Add internal ADC channels support. See Wiki
  • HID Bootloader v2.2 support thanks @Serasidis :
    https://github.com/Serasidis/STM32_HID_Bootloader
  • Add general call mode API. See Wiki

Fixes:

  • [UART] Fix serial port full-duplex bug
  • [UART] Fix error callback (clear flags and restart receive IT)
  • Fix to build with ISO C standard
  • Fix dtostrf() with value in range -1.0 < val < 0.0 (#513)

Plus several other fixes: See 1.5.0...1.6.0

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

known issues

  • Linker error if path contains space.:
    <...>/stm32/tools/arm-none-eabi-gcc/8-2018-q4-major/bin/../lib/gcc/arm-none-eabi/8.2.1/lto-wrapper.exe: No such file or directory
    See stm32duino/arm-none-eabi-gcc#1

Arduino Core for STM32 1.5.0

13 Feb 09:35
20db88e
Compare
Choose a tag to compare

Github Releases (by Release)

This release includes:

  • Added support of:

    • Nucleo H743ZI
    • Nucleo L452RE
    • Nucleo L412KB
    • 32F072BDISCOVERY
    • STM32F030F4 Demo board
    • BluePill F103C(6-8-B) (extend MCU version)
    • BlackPill F103C(8-B)  
    • HY-TinySTM103T
    • Black F407VG/ZE/ZG
    • DIYMROE STM32F407VGT
    • FK407M1
    • ARMED V1
    • EExtruder F030 V1
    • Malyan M200 V1
    • Malyan M200 V2
    • Prntr Board V1
    • RUMBA32
  • HAL Drivers and CMSIS updated:

    • STM32F1xx HAL Drivers to v1.1.3
    • STM32F1xx CMSIS to v4.3.0
    • STM32L0xx HAL Drivers to v1.10.0
    • STM32L0xx CMSIS to v1.9.0
  • New HAL Drivers and CMSIS:

    • STM32H7xx HAL Drivers v1.4.0
    • STM32H7xx CMSIS v1.4.0
  • Enhancements/improvements

    • Use LL for GPIO access
    • Add digitalReadFast()/digitalWriteFast() API (use the PinName (PY_n) instead of the pin number (PYn))
    • Add digitalToggle()/digitalToggleFast()
    • Add USB CDC support across all supported series in FS/HS.
    • Update USB HID composite (keyboard and mouse)
    • Remove CapacitiveSensor built-in library (support added in official library)
    • Add preprocessing of linker script. This allow to use switch in ldscript.ld file.
      By default, add define for RAM and FLASH max size:
      -DLD_MAX_SIZE={upload.maximum_size} -DLD_MAX_DATA_SIZE={upload.maximum_data_size}
    • Rework Serial and USB menu:
      • Rename "Serial interface" to "U(S)ART support"
      • Rename "USB interface" to "USB support"
      • Add "USB speed" menu for USB speed: LS/FS/HS/HS in FS
      • Reword some descriptions
  • Fixes

    • Fix SPI::setClockDivider implementation (#299)
    • Replace boolean with standard bool. boolean type now marked as deprecatedcd stm. See arduino/Arduino#4673.
    • [EEPROM] Wrong E2END definition (#396)
    • [dtostrf] Fix missing leading zeros in decimal part

Plus some other fixes: See 1.4.0...1.5.0

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

Arduino Core for STM32 1.4.0

31 Oct 17:19
Compare
Choose a tag to compare

Github Releases (by Release)

This release includes:

  • Added support of:

  • HAL Drivers and CMSIS updated:

    • STM32F3xx HAL Drivers to v1.5.2
    • STM32F3xx CMSIS to v2.3.3
    • STM32F7xx HAL Drivers to v1.2.6
    • STM32F7xx CMSIS to v1.2.3
    • STM32L4xx HAL Drivers to v1.9.0
    • STM32L4xx CMSIS to v1.5.0
  • [F1xxx] LSI typical value is 40kHz

  • Fix I2C issues raised since IT mode introduction

  • Add I2C Scanner examples thanks @Testato

  • WString: add toDouble (Arduino compatibility)

  • [U(S)ART] Allow to use defined PIN_SERIALx_RX and PIN_SERIALx_TX in variant.h if user instantiate a hardware Serial using peripheral name.
    Example:
    HardwareSerial mySerial(USART3);
    will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined.

  • Allow use of a custom startup file:
    Syntax in the board.txt:
    xxx.build.startup_file=-DCUSTOM_STARTUP_FILE

    Example to use a custom startup file for Nucleo_L476RG:
    Nucleo_64.menu.pnum.NUCLEO_L476RG.build.startup_file=-DCUSTOM_STARTUP_FILE
    Then add a "*.S" file in the "variant/NUCLEO_L476RG/" folder
    Important note: extension must be '.S' not '.s'

    CUSTOM_STARTUP_FILE could also be defined thanks the build_opt.h.
    CMSIS_STARTUP_FILE could now be overridden using the build_opt.h, ex:
    -DCMSIS_STARTUP_FILE=\"startup_stm32l476xx.s\"

  • Remove SD core dependencies. STM32SD will be able to handle properly SD detect pin and FatFs options.
    SD_DETECT_PIN pin number definition could be added in variant.h
    SD_DATATIMEOUT could be redefined in variant.h

  • Use define instead of enum for pins in variant.h thanks @ghent360 (Arduino compatibility)

  • Fix _sbrk() to avoid user heap to override the minimum stack size

  • Define _sbrk() as weak

  • [Nucleo-L476RG] Fix available SRAM size

  • [Nucleo-L432KC] Provide full SRAM access

  • Enable FPU Single Precision (SP) for Nucleo-F303K8

  • Add keywords.txt (Arduino compatibility)

  • Fix std::abs() usage

  • Add script to build the core thanks Travis (CI build)

  • Add menu options for C RunTime library

  • Change hourAM_PM_t enum member name. Required by STM32RTC library higher than 1.1.0.

  • [EEPROM] Fix address capablilities

  • [EEPROM] Allow FLASH definition to be redefined

  • [EEPROM emulation] Rework for buffered access thanks @hasenbanck

  • [U(S)ART] Fix AF settings

  • Update LL wrapper files management. Move all LL wrapper file in LL/ directory instead of HAL/
    Split stm32yyxx_ll.h file per feature (stm32yyxx_ll_*.h), this allow a better granularity and to include only the required LL header file instead of the full list.

  • Add built-in IWatchdog library thanks @ghent360.

  • Add debug(const char *format, ...) function

  • Remove GSM built-in library

  • Remove UART emulation

Plus some other small fixes: See 1.3.0...1.4.0

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

Arduino Core for STM32 1.3.0

15 Jun 18:37
Compare
Choose a tag to compare

This release includes:

  • Added support of:
    • NUCLEO-L496ZG
    • NUCLEO-L496ZG-P
    • STM32F0308Discovery (thanks @amassou2017)
  • Enable USART2 TX in the DISCO_L475VG_IOT
  • HAL Drivers and CMSIS updated:
    • STM32F1xx HAL Drivers to v1.1.2
    • STM32F3xx HAL Drivers to v1.5.1
    • STM32L4xx HAL Drivers to v1.8.3
    • STM32L4xx CMSIS to v1.4.3
  • Add RTC driver required for STM32RTC
  • Add low power driver required for STM32LowPower
  • Allow VECT_TAB_OFFSET to be redefined
  • Review Serial menu, 3 options:
    • Enabled with generic Serial: default, define HAL_UART_MODULE_ENABLED
      and instantiate Serial using SERIAL_UART_INSTANCE and PIN_SERIAL_RX/PIN_SERIAL_Tx
    • Enabled without generic Serial: define HAL_UART_MODULE_ENABLED
    • Disabled (No Serial): HAL_UART_MODULE_ENABLED not defined
      Allow to build without HAL_UART_MODULE_ENABLED (save memory)
      Now, HAL_UART_MODULE_ENABLED should not be defined in stm32yyxx_hal_conf.h
  • Add LPUART1 management
  • Several clean and other fixes ...

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

known issues

  • I2C: Several issue raised around I2C and related to IT mode implementation, see #217
  • [STLink] Failed to flash Nucleo L496ZG(-P) under Linux and Mac, see stm32duino/Arduino_Tools#23
  • Since e02bc35, some serial was not functional. Ex for Nucleo-L432KC, the AF of USART2 (used for STLink VCP)
    are not the same. See #312

Arduino Core for STM32 1.2.0

23 Mar 09:10
af3d2e7
Compare
Choose a tag to compare

This release includes:

  • Added support of:
    • BluePill F103C8 (Basic support, no USB)
    • MapleMini F103CB (Basic support, no USB)
  • Fixed build failed on Windows if path contains space.
  • Update c++ compilation standard to 2014 from 2011
  • Moved from CMSIS 4.5.0 to 5.3.0
  • HAL Drivers and CMSIS updated:
    • STM32F4xx HAL Drivers to v1.7.4
    • STM32F7xx HAL Drivers to v1.2.5
    • STM32F7xx CMSIS to v1.2.2
    • STM32L1xx CMSIS to v2.2.3
    • STM32L4xx HAL Drivers to v1.8.2
    • STM32L4xx CMSIS to v1.4.2
  • Arduino compatibility:
    • Ax pin definition is now inline with Arduino style
    • Defining NUM_DIGITAL_PINS and NUM_ANALOG_INPUTS as literals
  • Specify the ARM GCC version in platforms.txt (thanks @sandeepmistry)
  • Add LoRa pins definition for B-L072Z-LRWAN1. LoRa Radio tested thanks arduino-LoRa library.
  • Removed LwIP option file from the core (lwipopts.h)
    A default one is provided with STM32Ethernet library.
    Add a file named "STM32lwipopts.h" in the sketch folder could be used instead of the default config.
  • Several clean and other fixes ...

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

Warning

Release versioning has been changed from date versioning to semantic one. See Release Versioning change

known issues

  • I2C: Several issue raised around I2C and related to IT mode implementation, see #217

Arduino Core for STM32 1.1.1

15 Mar 15:28
Compare
Choose a tag to compare

This release includes:

  • Added support of:

  • Added ability to bind std:function on interrupts

  • Added _Error_Handler(const char *, int)

  • Added FreeRTOS support

  • Added new HardwareSerial constructor using pin number

  • Added setXXX methods to change used pins of Wire or SPI instances:
    Example to change pins used by Wire instance (by default use defined SDA/SCL ):

    Wire.setSDA(A4);
    Wire.setSCL(PC2);
    Wire.begin();
    

    Example to change pins used by SPI instance (by default use defined MISO/MOSI/SCK):

    SPI.setMOSI(22);
    SPI.setMISO(PA3);
    SPI.begin();
    
  • Added recipe.hooks feature to override gcc options thanks a file named "build_opt.h" in the sketch directory.

  • Allow to redefine core Exception handler

  • Enhance DEBUG_UART feature (used by printf)

  • Improve micros() accuracy using SysTick COUNTFLAG

  • Improve SPI library code clarity

  • Provide access to Low Layer (LL) drivers

  • Fixed build issue when USART1 or USART2 is not defined

  • Fixed L4 ADC read issue

  • Fixed LED_BUILTIN for DISCO_L072CZ_LRWAN1

  • Several clean and other fixes ...

Several components libraries are available on stm32duino organization.
They are also available through the Arduino library manager. Search for STM32duino ;)

known issues

  • Build failed on Windows if path contains space.
    See #204

Note: Old release was 2018.1.18

Arduino Core for STM32 1.1.0

15 Mar 15:26
71904d4
Compare
Choose a tag to compare

This release includes:

  • Added support of:
  • Enabled FPU Single Precision (SP)
  • Update HAL/CMSIS Drivers for F0, F2, F4, F7, L0, L1, L4
  • Added missing U(S)ART peripherals management
  • Serialx instance now generic
  • Added missing -g option for debug
  • Use STL C++ instead of macro
  • Use interrupt mode for I2C transfers
  • Wire Rx/Tx buffers are now dynamically allocated (min size: BUFFER_LENGTH)
  • Disabled Core callback feature (Use -DCORE_CALLBACK to enable it)
  • Several other fixes ...

Several components libraries created on stm32duino organization.
They are available through the Arduino library manager. Search for STM32duino ;)

Note: Old release was 2017.11.24