From 76e235a23b6957760d7ac57af336d4d299b0359a Mon Sep 17 00:00:00 2001 From: klassents Date: Fri, 20 Dec 2024 10:08:33 +0700 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=BF=D0=B8=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BD=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA?= =?UTF-8?q?=D1=83=20-=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B8=20=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D1=82=D1=8C,=20=D0=B8=20=D1=82=D1=83=D0=B3=D0=B3=D0=BB=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B8=20=D0=BD=D0=B0=20=D0=B2=D1=8B=D1=85=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=B0=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BF=D0=B8=D0=BD=20=D0=BA=D0=BD=D0=BE=D0=BF?= =?UTF-8?q?=D0=BA=D0=B8=20-=20=D0=B2=D1=81=D0=B5=20=D0=BD=D0=B0=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=81=D1=82=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cores/arduino/wiring_digital.c | 68 +++++++++++++--------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/cores/arduino/wiring_digital.c b/cores/arduino/wiring_digital.c index 66b3428..3e24bc6 100644 --- a/cores/arduino/wiring_digital.c +++ b/cores/arduino/wiring_digital.c @@ -40,42 +40,30 @@ void pinMode(uint32_t PinNumber, uint32_t PinMode) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - // adjusting pins - if (PinNumber == BTN_BUILTIN) - { - // always set the button to input, otherwise the controller may burn out when pressed - GPIO_InitStruct.Pin = GPIO_PIN_6; - GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; - GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; - HAL_GPIO_Init(GPIO_2, &GPIO_InitStruct); - } - else // other pins - { - // determine the port and the pin number in the port - GPIO_TypeDef *GPIO_addr = digitalPinToPort(PinNumber); - GPIO_InitStruct.Pin = digitalPinToBitMask(PinNumber); + // determine the port and the pin number in the port + GPIO_TypeDef *GPIO_addr = digitalPinToPort(PinNumber); + GPIO_InitStruct.Pin = digitalPinToBitMask(PinNumber); - // set up direction and pull up/down - switch (PinMode) - { - case INPUT: - GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; - GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; - break; - case INPUT_PULLUP: - GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; - GPIO_InitStruct.Pull = HAL_GPIO_PULL_UP; - break; - case OUTPUT: - GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_OUTPUT; - GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; - break; - } - - // init pin - HAL_GPIO_Init(GPIO_addr, &GPIO_InitStruct); - additionalPinsInit(PinNumber); + // set up direction and pull up/down + switch (PinMode) + { + case INPUT: + GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; + GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; + break; + case INPUT_PULLUP: + GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; + GPIO_InitStruct.Pull = HAL_GPIO_PULL_UP; + break; + case OUTPUT: + GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_OUTPUT; + GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; + break; } + + // init pin + HAL_GPIO_Init(GPIO_addr, &GPIO_InitStruct); + additionalPinsInit(PinNumber); } // write pin @@ -91,11 +79,7 @@ void digitalWrite(uint32_t PinNumber, uint32_t Val) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - // just in case let's move on to the hal library state terms - GPIO_PinState pinState = (Val == HIGH) ? GPIO_PIN_HIGH : GPIO_PIN_LOW; - - if (PinNumber != BTN_BUILTIN) // don't write anything to the button - HAL_GPIO_WritePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber), pinState); + HAL_GPIO_WritePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber), (Val == HIGH) ? GPIO_PIN_HIGH : GPIO_PIN_LOW); } // read pin @@ -111,8 +95,7 @@ int digitalRead(uint32_t PinNumber) analogWriteStop(PinNumber); GPIO_PinState pinState = HAL_GPIO_ReadPin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); - int state = (pinState == GPIO_PIN_LOW) ? LOW : HIGH; - return state; + return (pinState == GPIO_PIN_LOW) ? LOW : HIGH; } // toggle pin @@ -127,8 +110,7 @@ void digitalToggle(uint32_t PinNumber) // if the pin can use PWM, disable PWM analogWriteStop(PinNumber); - if (PinNumber != BTN_BUILTIN) // don't write anything to the button - HAL_GPIO_TogglePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); + HAL_GPIO_TogglePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); } #ifdef __cplusplus