убрала проверку пинов на кнопку - теперь можно и писать, и тугглить и на выход настраивать пин кнопки - все на совести пользователя

This commit is contained in:
klassents 2024-12-20 10:08:33 +07:00
parent 72348bba6d
commit 76e235a23b

View File

@ -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