From c12d3bf067b4514894daf625e7ae0335e9eec414 Mon Sep 17 00:00:00 2001 From: KLASSENTS Date: Fri, 17 Jan 2025 09:58:11 +0700 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B1=D1=8B=D1=81=D1=82=D1=80=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cores/arduino/wiring_digital.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/cores/arduino/wiring_digital.c b/cores/arduino/wiring_digital.c index 3e24bc6..0f199f1 100644 --- a/cores/arduino/wiring_digital.c +++ b/cores/arduino/wiring_digital.c @@ -19,6 +19,7 @@ #include "Arduino.h" #include "pins_arduino.h" #include "mik32_hal_gpio.h" +#include "wiring_LL.h" #ifdef __cplusplus extern "C" { @@ -66,6 +67,26 @@ void pinMode(uint32_t PinNumber, uint32_t PinMode) additionalPinsInit(PinNumber); } +void fastPinMode(uint32_t PinNumber, uint32_t PinMode) +{ + GPIO_TypeDef* port = digitalPinToPort(PinNumber); + HAL_PinsTypeDef pinMask = digitalPinToBitMask(PinNumber); + // set direction + if (PinMode == OUTPUT) + GPIO_OUTPUT_MODE_PIN(port, pinMask); + else + GPIO_INPUT_MODE_PIN(port, pinMask); + + // set pullup + if (PinMode == INPUT_PULLUP) + { + uint8_t pos = PIN_MASK_TO_PIN_NUMBER(pinMask); + if (port == GPIO_0) PIN_SET_PAD_CONFIG(PORT_0_PUPD, pos, HAL_GPIO_PULL_UP); + else if (port == GPIO_1) PIN_SET_PAD_CONFIG(PORT_1_PUPD, pos, HAL_GPIO_PULL_UP); + else PIN_SET_PAD_CONFIG(PORT_2_PUPD, pos, HAL_GPIO_PULL_UP); + } +} + // write pin void digitalWrite(uint32_t PinNumber, uint32_t Val) {