Skip to content

v0.3.0

Choose a tag to compare

@FreddieChopin FreddieChopin released this 24 Nov 21:01
· 2976 commits to master since this release

Added

  • Support for periodic execution of software timers. All overloads of SoftwareTimer::start() were extended with
    optional second argument with period. If the period is 0 (which is the default value), software timer's function is
    executed only once. Otherwise it will be executed periodically until the software timer is stopped.
  • devices::UartBase interface class, which can be used as a private base for devices using UART interface.
  • devices::UartLowLevel interface class, which is a low-level interface to hardware-dependent UART driver.
  • chip::ChipUartLowLevel class - interrupt-driven implementation of devices::UartLowLevel interface for STM32F0,
    STM32F1 and STM32F4.
  • devices::SpiMasterBase interface class, which can be used as a private base for devices using SPI as bus master.
  • devices::SpiMasterLowLevel interface class, which is a low-level interface to hardware-dependent SPI bus master
    driver.
  • chip::ChipSpiMasterLowLevel class - interrupt-driven implementation of devices::SpiMasterLowLevel interface for
    STM32F0, STM32F1 and STM32F4.
  • "Peripherals configuration" Kconfig menu, where low-level drivers for SPI bus master and U[S]ART can
    be selected.
  • uarts.hpp header for STM32F0, STM32F1 and STM32F4 with declarations of all enabled low-level U[S]ART drivers.
  • spis.hpp header for STM32F0, STM32F1 and STM32F4 with declarations of all enabled low-level SPI master
    drivers.
  • devices::SerialPort class - universal serial port device with an interface similar to standard files (open(),
    close(), read(), write()). read() and write() member functions of this class support both blocking (with
    or without timeout) and non-blocking behaviour. Convenient wrappers for reading/writing with timeout are also provided:
    tryReadFor(), tryReadUntil(), tryWriteFor() and tryWriteUntil().
  • estd::ScopeGuard template class, which can be used to execute bound function on scope exit using RAII pattern.
  • devices::Rs485 class - RS-485 device with all features of devices::SerialPort and with automatic management
    of "driver enable" output pin.
  • devices::SpiMaster and devices::SpiDevice classes, which enable easy communication with multiple SPI slave devices
    connected to the same SPI bus master.
  • devices::SpiEeprom class which is a driver for common SPI EEPROM chips: Atmel AT25xxx,
    ON Semiconductor CAT25xxx, ST M95xxx, Microchip 25xxxxx or similar.
  • Support for 4 new STM32F412 chips.
  • New package types for STM32F410CB and STM32F410RB chips.
  • Support for assert() - override of newlib's __assert_func(), weak assertHook() for application and option to
    enable/disable assertions in Kconfig menus.
  • Extend estd::ContiguousRange with support for std::array, constructor for non-const -> const conversions and
    various useful functions: cbegin(), cend(), rbegin(), rend(), crbegin(), crend().
  • Option in Kconfig menus for manual configuration of ROM's offset and size in generated linker script. This can be
    useful when the device has a bootloader at the beginning of flash, when the application is a bootloader and/or when the
    application uses a few last ROM pages for its own purposes (e.g. emulated EEPROM, storing configuration, logging, ...).
  • architecture::isInInterruptContext() which checks whether thread or interrupt context is currently active. An
    example use is when the application needs to decide between blocking or non-blocking behaviour, as blocking is not
    possible in interrupt context.
  • protected ChipInputPin::getInvertedMode(), ChipInputPin::setInvertedMode(), ChipOutputPin::getInvertedMode()
    and ChipOutputPin::setInvertedMode() functions, which - if needed - can be made public by deriving from these
    classes.
  • Missing tests of timers: basic operations of periodic timers, synchronous and asynchronous stops and restarts, reading
    of state in timer's function.
  • New chips: STM32F071C8, STM32F101C4, 4 STM32F412xE chips, 3 STM32F469Vx chips, 3 STM32F469Zx chips, 2
    STM32F479Vx chips and 2 STM32F479Zx chips.
  • New package types: UFQFPN48 for STM32F101C8, LQFP176 for STM32F469IG.

Changed

  • Replace generator of distortosConfiguration.h that uses AWK (makeDistortosConfiguration.awk) with the one using
    shell, cat and sed (makeDistortosConfiguration.sh). With this change AWK is no longer needed to configure &
    build this project.
  • Merge GPIO drivers for STM32.
  • Update CMSIS-STM32F0 to version 1.6.0.
  • Update CMSIS-STM32F1 to version 1.4.0.
  • Update CMSIS-STM32F4 to version 1.13.0.

Fixed

  • Fix generated linker scripts for older versions of ld (like 2.24.0.20141128), where hidden symbols cannot be used in
    expressions.
  • Fix failure of test application for new versions of "official" ARM toolchain (5.x).
  • Fixes necessary for compilation and proper behaviour in GCC 6.2.0 - mainly related to reinterpret_cast<>() in
    constant expressions.
  • ST's website no longer lists WLCSP49 as package type for STM32F401CB.