вспомогательные функции и функции digital вынесены в ram для увеличения быстродействия

This commit is contained in:
klassents committed 2025-03-14 11:17:47 +07:00
1 parent a417b70bde
commit ac51d0cae1
3 files changed
+69 -68

No files matched your search

+10 -14
View File
@@ -95,7 +95,7 @@ void fastPinMode(uint32_t PinNumber, uint32_t PinMode)
}
// write pin
void digitalWrite(uint32_t PinNumber, uint32_t Val)
__attribute__((noinline, section(".ram_text"))) void digitalWrite(uint32_t PinNumber, uint32_t Val)
{
if ((PinNumber>=pinCommonQty()))
{
@@ -103,50 +103,46 @@ void digitalWrite(uint32_t PinNumber, uint32_t Val)
return;
}
GPIO_TypeDef* port = digitalPinToPort(PinNumber);
HAL_PinsTypeDef pin = digitalPinToBitMask(PinNumber);
if (digitalPinPwmIsOn(PinNumber))
// if the pin can use PWM, disable PWM
analogWriteStop(PinNumber);
if (Val == HIGH)
GPIO_SET_PIN(port, pin);
GPIO_SET_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber));
else
GPIO_CLEAR_PIN(port, pin);
GPIO_CLEAR_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber));
}
// read pin
int digitalRead(uint32_t PinNumber)
__attribute__((noinline, section(".ram_text"))) int digitalRead(uint32_t PinNumber)
{
if ((PinNumber>=pinCommonQty()))
{
ErrorMsgHandler("digitalRead(): pin number exceeds the total number of pins");
return -1;
}
GPIO_TypeDef* port = digitalPinToPort(PinNumber);
HAL_PinsTypeDef pin = digitalPinToBitMask(PinNumber);
if (digitalPinPwmIsOn(PinNumber))
// if the pin can use PWM, disable PWM
analogWriteStop(PinNumber);
return GPIO_READ_PIN(port, pin);
return GPIO_READ_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber));
}
// toggle pin
void digitalToggle(uint32_t PinNumber)
__attribute__((noinline, section(".ram_text"))) void digitalToggle(uint32_t PinNumber)
{
if ((PinNumber>=pinCommonQty()))
{
ErrorMsgHandler("digitalToggle(): pin number exceeds the total number of pins");
return;
}
if (digitalPinHasPWM(PinNumber))
if (digitalPinPwmIsOn(PinNumber))
// if the pin can use PWM, disable PWM
analogWriteStop(PinNumber);
HAL_GPIO_TogglePin(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber));
GPIO_TOGGLE_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber));
}
#ifdef __cplusplus