Releases: stm32duino/Arduino_Core_STM32
Arduino Core for STM32 1.8.0
This release includes:
Add support of:
- Nucleo L452RE-P
- STM32MP157A-DK1
- STM32MP157C-DK2
- Adafruit Feather STM32F405 Express
- Generic F401R(B-C-D-E)
- PX-HER0
- ThunderPack
- Malyan M300
- Prntr Board V2
- Wraith V1 ESC
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:
- Updates STM32 Tools 1.3.2
- Move from arm-none-eabi-gcc 8.2.1-1.7 to xpack-arm-none-eabi-gcc-9.2.1-1.1. See important note
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
toPrint
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
andDACC_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
This release includes:
Add support of:
- Blackpill F401CC
- Nucleo-G431KB
- Nucleo-G431RB
- Nucleo-G474RE
- STEVAL-MKSBOX1V1 (SensorTile.box)
- SharkyMKR from Midatronics
- Core Board F401RC
- Afroflight Rev 5 (8/12MHz)
- Generic STM32F103R(8/B/C/E)
- Add module RHF76-052 based on STM32L051
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
andNUM_ANALOG_FIRST
could be not defined or set to respectively0
andNUM_DIGITAL_PINS
. Nevertheless, this kept ADC internal channels functional ifHAL_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
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:
- Linker error if path contains space under windows:
See stm32duino/arm-none-eabi-gcc#1
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
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:
- Moved from CMSIS 5.3.0 to 5.5.1
- Moved from arm-none-eabi-gcc 6-2017-q2-update to 8-2018-q4-major
- Updates STM32 Tools 1.3.0
Enhancements/improvements:
- Introduce code formatting using Astyle 3.1:
- code style definition: .astylerc
- ignored path: .astyleignore
- python script to launch Astyle: astyle.py
- 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 fordelayMicroseconds()
- [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)
- Enabled thanks:
- 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
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 standardbool
.boolean
type now marked as deprecatedcd stm. See arduino/Arduino#4673. - [EEPROM] Wrong
E2END
definition (#396) - [dtostrf] Fix missing leading zeros in decimal part
- Fix
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
This release includes:
-
Added support of:
- Nucleo L4R5ZI (thanks @Lannakin)
- Nucleo L4R5ZI-P (thanks @Lannakin)
- Black F407VET6 (thanks @edogaldo )
- Blue F407VET6 Mini (thanks @edogaldo )
- Nucleo F767ZI (thanks @davidangerls)
- RemRam v1 (thanks @hasenbanck )
- Nucleo L073RZ (thanks @zoomx )
- RAK811 LoRa Tracker (Basic support) (thanks @sabas1080 )
-
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
andPIN_SERIALx_TX
invariant.h
if user instantiate a hardware Serial using peripheral name.
Example:
HardwareSerial mySerial(USART3);
will usePIN_SERIAL3_RX
andPIN_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 thebuild_opt.h
.
CMSIS_STARTUP_FILE
could now be overridden using thebuild_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 invariant.h
SD_DATATIMEOUT
could be redefined invariant.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 ofHAL/
Splitstm32yyxx_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
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
- Enabled with generic Serial: default, define HAL_UART_MODULE_ENABLED
- 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
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
This release includes:
-
Added support of:
- Nucleo F446RE
- Nucleo-L031K6 (thanks @silviooliva )
-
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
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