mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 00:35:39 +03:00
IO Clean up and use of Low level for F7
- Move F7 to optional LL driver for IO and - cleaned up and removed the remaining old gpio functions from other targets
This commit is contained in:
parent
da46ef68a9
commit
e8c4ef83d9
26 changed files with 75 additions and 541 deletions
|
@ -156,8 +156,10 @@ bool IORead(IO_t io)
|
|||
{
|
||||
if (!io)
|
||||
return false;
|
||||
#if defined(USE_HAL_DRIVER)
|
||||
return !! HAL_GPIO_ReadPin(IO_GPIO(io),IO_Pin(io));
|
||||
#if defined(USE_LOWLEVEL_DRIVER)
|
||||
return !! (LL_GPIO_ReadInputPort(IO_GPIO(io)) & IO_Pin(io));
|
||||
#elif defined(USE_HAL_DRIVER)
|
||||
return !! HAL_GPIO_ReadPin(IO_GPIO(io), IO_Pin(io));
|
||||
#else
|
||||
return !! (IO_GPIO(io)->IDR & IO_Pin(io));
|
||||
#endif
|
||||
|
@ -167,7 +169,9 @@ void IOWrite(IO_t io, bool hi)
|
|||
{
|
||||
if (!io)
|
||||
return;
|
||||
#if defined(USE_HAL_DRIVER)
|
||||
#if defined(USE_LOWLEVEL_DRIVER)
|
||||
LL_GPIO_SetOutputPin(IO_GPIO(io), IO_Pin(io) << (hi ? 0 : 16));
|
||||
#elif defined(USE_HAL_DRIVER)
|
||||
if (hi) {
|
||||
HAL_GPIO_WritePin(IO_GPIO(io),IO_Pin(io),GPIO_PIN_SET);
|
||||
}
|
||||
|
@ -190,7 +194,9 @@ void IOHi(IO_t io)
|
|||
{
|
||||
if (!io)
|
||||
return;
|
||||
#if defined(USE_HAL_DRIVER)
|
||||
#if defined(USE_LOWLEVEL_DRIVER)
|
||||
LL_GPIO_SetOutputPin(IO_GPIO(io), IO_Pin(io));
|
||||
#elif defined(USE_HAL_DRIVER)
|
||||
HAL_GPIO_WritePin(IO_GPIO(io),IO_Pin(io),GPIO_PIN_SET);
|
||||
#elif defined(STM32F4)
|
||||
IO_GPIO(io)->BSRRL = IO_Pin(io);
|
||||
|
@ -203,7 +209,9 @@ void IOLo(IO_t io)
|
|||
{
|
||||
if (!io)
|
||||
return;
|
||||
#if defined(USE_HAL_DRIVER)
|
||||
#if defined(USE_LOWLEVEL_DRIVER)
|
||||
LL_GPIO_ResetOutputPin(IO_GPIO(io), IO_Pin(io));
|
||||
#elif defined(USE_HAL_DRIVER)
|
||||
HAL_GPIO_WritePin(IO_GPIO(io),IO_Pin(io),GPIO_PIN_RESET);
|
||||
#elif defined(STM32F4)
|
||||
IO_GPIO(io)->BSRRH = IO_Pin(io);
|
||||
|
@ -216,11 +224,16 @@ void IOToggle(IO_t io)
|
|||
{
|
||||
if (!io)
|
||||
return;
|
||||
|
||||
uint32_t mask = IO_Pin(io);
|
||||
// Read pin state from ODR but write to BSRR because it only changes the pins
|
||||
// high in the mask value rather than all pins. XORing ODR directly risks
|
||||
// setting other pins incorrectly because it change all pins' state.
|
||||
#if defined(USE_HAL_DRIVER)
|
||||
#if defined(USE_LOWLEVEL_DRIVER)
|
||||
if (LL_GPIO_ReadOutputPort(IO_GPIO(io)) & mask)
|
||||
mask <<= 16; // bit is set, shift mask to reset half
|
||||
LL_GPIO_SetOutputPin(IO_GPIO(io), mask);
|
||||
#elif defined(USE_HAL_DRIVER)
|
||||
(void)mask;
|
||||
HAL_GPIO_TogglePin(IO_GPIO(io),IO_Pin(io));
|
||||
#elif defined(STM32F4)
|
||||
|
@ -284,18 +297,7 @@ void IOConfigGPIO(IO_t io, ioConfig_t cfg)
|
|||
|
||||
void IOConfigGPIO(IO_t io, ioConfig_t cfg)
|
||||
{
|
||||
if (!io)
|
||||
return;
|
||||
rccPeriphTag_t rcc = ioPortDefs[IO_GPIOPortIdx(io)].rcc;
|
||||
RCC_ClockCmd(rcc, ENABLE);
|
||||
|
||||
GPIO_InitTypeDef init = {
|
||||
.Pin = IO_Pin(io),
|
||||
.Mode = (cfg >> 0) & 0x13,
|
||||
.Speed = (cfg >> 2) & 0x03,
|
||||
.Pull = (cfg >> 5) & 0x03,
|
||||
};
|
||||
HAL_GPIO_Init(IO_GPIO(io), &init);
|
||||
IOConfigGPIOAF(io, cfg, 0);
|
||||
}
|
||||
|
||||
void IOConfigGPIOAF(IO_t io, ioConfig_t cfg, uint8_t af)
|
||||
|
@ -305,6 +307,17 @@ void IOConfigGPIOAF(IO_t io, ioConfig_t cfg, uint8_t af)
|
|||
rccPeriphTag_t rcc = ioPortDefs[IO_GPIOPortIdx(io)].rcc;
|
||||
RCC_ClockCmd(rcc, ENABLE);
|
||||
|
||||
#if defined(USE_LOWLEVEL_DRIVER)
|
||||
LL_GPIO_InitTypeDef init = {
|
||||
.Pin = IO_Pin(io),
|
||||
.Mode = (cfg >> 0) & 0x13,
|
||||
.Speed = (cfg >> 2) & 0x03,
|
||||
.Pull = (cfg >> 5) & 0x03,
|
||||
.Alternate = af
|
||||
};
|
||||
|
||||
LL_GPIO_Init(IO_GPIO(io), &init);
|
||||
#else
|
||||
GPIO_InitTypeDef init = {
|
||||
.Pin = IO_Pin(io),
|
||||
.Mode = (cfg >> 0) & 0x13,
|
||||
|
@ -313,7 +326,9 @@ void IOConfigGPIOAF(IO_t io, ioConfig_t cfg, uint8_t af)
|
|||
.Alternate = af
|
||||
};
|
||||
HAL_GPIO_Init(IO_GPIO(io), &init);
|
||||
#endif
|
||||
}
|
||||
|
||||
#elif defined(STM32F3) || defined(STM32F4)
|
||||
|
||||
void IOConfigGPIO(IO_t io, ioConfig_t cfg)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue