From d3b93e55bd538d588c03e3712f47b2468c021fcb Mon Sep 17 00:00:00 2001 From: KLASSENTS Date: Wed, 12 Mar 2025 15:47:15 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=D0=B0=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BC=D0=B0=D0=BA=D1=80=D0=BE=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cores/arduino/wiring_digital.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cores/arduino/wiring_digital.c b/cores/arduino/wiring_digital.c index 47d358d..8ccffab 100644 --- a/cores/arduino/wiring_digital.c +++ b/cores/arduino/wiring_digital.c @@ -102,12 +102,18 @@ void digitalWrite(uint32_t PinNumber, uint32_t Val) ErrorMsgHandler("digitalWrite(): pin number exceeds the total number of pins"); return; } + + GPIO_TypeDef* port = digitalPinToPort(PinNumber); + HAL_PinsTypeDef pin = digitalPinToBitMask(PinNumber); if (digitalPinHasPWM(PinNumber)) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - HAL_GPIO_WritePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber), (Val == HIGH) ? GPIO_PIN_HIGH : GPIO_PIN_LOW); + if (Val == HIGH) + GPIO_SET_PIN(port, pin); + else + GPIO_CLEAR_PIN(port, pin); } // read pin @@ -118,12 +124,14 @@ int digitalRead(uint32_t PinNumber) ErrorMsgHandler("digitalRead(): pin number exceeds the total number of pins"); return -1; } + GPIO_TypeDef* port = digitalPinToPort(PinNumber); + HAL_PinsTypeDef pin = digitalPinToBitMask(PinNumber); + if (digitalPinHasPWM(PinNumber)) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - GPIO_PinState pinState = HAL_GPIO_ReadPin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); - return (pinState == GPIO_PIN_LOW) ? LOW : HIGH; + return GPIO_READ_PIN(port, pin); } // toggle pin