Merge pull request #9396 from jflyper/bfdev-g4-io-and-rcc

[G4] IO and RCC support
This commit is contained in:
Michael Keller 2020-01-24 12:53:00 +13:00 committed by GitHub
commit 9e596a6716
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 4 deletions

View File

@ -92,6 +92,15 @@ const struct ioPortDef_s ioPortDefs[] = {
{ RCC_AHB4(GPIOH) },
{ RCC_AHB4(GPIOI) },
};
#elif defined(STM32G4)
const struct ioPortDef_s ioPortDefs[] = {
{ RCC_AHB2(GPIOA) },
{ RCC_AHB2(GPIOB) },
{ RCC_AHB2(GPIOC) },
{ RCC_AHB2(GPIOD) },
{ RCC_AHB2(GPIOE) },
{ RCC_AHB2(GPIOF) },
};
#endif
ioRec_t* IO_Rec(IO_t io)
@ -155,7 +164,7 @@ uint32_t IO_EXTI_Line(IO_t io)
if (!io) {
return 0;
}
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
#if defined(STM32F1) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
return 1 << IO_GPIOPinIdx(io);
#elif defined(STM32F3)
return IO_GPIOPinIdx(io);
@ -323,7 +332,7 @@ void IOConfigGPIO(IO_t io, ioConfig_t cfg)
GPIO_Init(IO_GPIO(io), &init);
}
#elif defined(STM32H7)
#elif defined(STM32H7) || defined(STM32G4)
void IOConfigGPIO(IO_t io, ioConfig_t cfg)
{

View File

@ -49,7 +49,7 @@
#define IOCFG_IPU IO_CONFIG(GPIO_Mode_IPU, GPIO_Speed_2MHz)
#define IOCFG_IN_FLOATING IO_CONFIG(GPIO_Mode_IN_FLOATING, GPIO_Speed_2MHz)
#elif defined(STM32F7) || defined(STM32H7)
#elif defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
//speed is packed inside modebits 5 and 2,
#define IO_CONFIG(mode, speed, pupd) ((mode) | ((speed) << 2) | ((pupd) << 5))
@ -122,7 +122,7 @@ bool IOIsFreeOrPreinit(IO_t io);
IO_t IOGetByTag(ioTag_t tag);
void IOConfigGPIO(IO_t io, ioConfig_t cfg);
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
#if defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
void IOConfigGPIOAF(IO_t io, ioConfig_t cfg, uint8_t af);
#endif

View File

@ -39,6 +39,11 @@ enum rcc_reg {
RCC_APB3,
RCC_AHB4,
RCC_APB4,
#elif defined(STM32G4)
RCC_AHB2,
RCC_APB2,
RCC_APB1,
RCC_AHB1,
#else
RCC_AHB,
RCC_APB2,
@ -64,5 +69,13 @@ enum rcc_reg {
#define RCC_APB1H(periph) RCC_ENCODE(RCC_APB1H, RCC_APB1HENR_ ## periph ## EN)
#endif
#ifdef STM32G4
#undef RCC_APB1
#define RCC_APB11(periph) RCC_ENCODE(RCC_APB1, RCC_APB1ENR1_ ## periph ## EN)
#define RCC_APB12(periph) RCC_ENCODE(RCC_APB1, RCC_APB1ENR2_ ## periph ## EN)
#define RCC_AHB1(periph) RCC_ENCODE(RCC_AHB1, RCC_AHB1ENR_ ## periph ## EN)
#define RCC_AHB2(periph) RCC_ENCODE(RCC_AHB2, RCC_AHB2ENR_ ## periph ## EN)
#endif
void RCC_ClockCmd(rccPeriphTag_t periphTag, FunctionalState NewState);
void RCC_ResetCmd(rccPeriphTag_t periphTag, FunctionalState NewState);