Changes 2024-11-03

Library Modules v2

The modules in libv2 have been ported to be used for both the RP2040 and RP2350. Others are in the works.

Notable changes include, compared to lib:

Timers.mod

  • Support for two timers.

GPIO.mod

  • Function numbers are defined in module MCU2 only, since they differ between the two MCUs.
  • The pad base configuration is set to input disabled. This is the reset configuration on the RP2350. Note this is the pin’s pad config, not the GPIO device. The IO direction of a GPIO device is configured by selecting a GPIO function. For example, there’s no need to enable the GPIO output (via the corresponding SIO register) for a UART’s transmit pin.
  • New procedure to disable the pad isolation for the RP2350.

Exceptions.mod

  • API uses interrupt and exceptions numbers as parameters, not a corresponding bit mask, since the RP2350 has more than 32 interrupts.
  • Priority is specified as 8 bit value, of which the RP2040 uses the two most significant bits (four priority levels), and the RP2350 three (eight levels).
  • Interrupt and exception numbers are defined in module MCU2 only, since they differ between the two MCUs.

Main.mod

  • Adjust UART pin configuration for the changes in module GPIO.
  • RP2350: enable the floating point unit (FPU). Of course, the FPU will only be used if a program is compiled with a compiler that issues the corresponding instructions, such as Astrobe for Cortex-M4.

RuntimeErrors.mod

For the RP2350:

  • extend the calculations for the different stack frames when the FPU is used;
  • extend the vector table for the additional hardware faults;
  • enable the additional hardware faults.

Clocks.mod

  • RP2350: use the Ticks device in lieu of the Watchdog for the 1 MHz tick signal for the Timers, SysTick, and Watchdog.

Example Program

  • Example program BlinkPlus is adjusted to use the extended module Timers.
  • There are two variants:

Website

A first round of updated contents: