Merge pull request #127 from facchinm/mbed_boards_support

mbed: fix crash on digital* operations
This commit is contained in:
Paul Stoffregen
2023-12-11 08:52:12 -08:00
committed by GitHub
2 changed files with 24 additions and 0 deletions
+20
View File
@@ -427,6 +427,26 @@ void directWriteHigh(IO_REG_TYPE mask)
#define DIRECT_MODE_INPUT(base, mask) directModeInput(mask)
#define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask)
#elif defined(__MBED__)
#include "platform/mbed_critical.h"
#include "DigitalInOut.h"
#include <cmsis_os2.h>
#define PIN_TO_BASEREG(pin) (0)
#define PIN_TO_BITMASK(pin) (new mbed::DigitalInOut(digitalPinToPinName(pin)))
#define IO_REG_TYPE mbed::DigitalInOut*
#define IO_REG_BASE_ATTR
#define IO_REG_MASK_ATTR
#define DIRECT_READ(base, pin) (*pin)
#define DIRECT_WRITE_LOW(base, pin) (*pin = 0)
#define DIRECT_WRITE_HIGH(base, pin) (*pin = 1)
#define DIRECT_MODE_INPUT(base, pin) (pin->input())
#define DIRECT_MODE_OUTPUT(base, pin) (pin->output())
#undef interrupts
#undef noInterrupts
#define noInterrupts() osThreadSetPriority(osThreadGetId(), osPriorityRealtime) //core_util_critical_section_enter()
#define interrupts() osThreadSetPriority(osThreadGetId(), osPriorityNormal) //core_util_critical_section_exit()
#elif defined(ARDUINO_ARCH_MBED_RP2040)|| defined(ARDUINO_ARCH_RP2040)
#define delayMicroseconds(time) busy_wait_us(time)
#define PIN_TO_BASEREG(pin) (0)
+4
View File
@@ -45,6 +45,10 @@
#elif defined(__arc__) /* Arduino101/Genuino101 specifics */
#define IO_REG_TYPE uint32_t
#elif defined(__MBED__)
#include "DigitalInOut.h"
#define IO_REG_TYPE mbed::DigitalInOut*
#elif defined(__riscv)
#define IO_REG_TYPE uint32_t