/** * @brief Low level HAL driver initialization. * * @notapi */ void hal_lld_init(void) { /* Reset of all peripherals. AHB3 is not reseted because it could have been initialized in the board initialization file (board.c).*/ rccResetAHB1(~0); rccResetAHB2(~0); rccResetAPB1(~RCC_APB1RSTR_PWRRST); rccResetAPB2(~0); /* SysTick initialization using the system clock.*/ SysTick->LOAD = STM32_HCLK / CH_FREQUENCY - 1; SysTick->VAL = 0; SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk; /* DWT cycle counter enable.*/ SCS_DEMCR |= SCS_DEMCR_TRCENA; DWT_CTRL |= DWT_CTRL_CYCCNTENA; /* PWR clock enabled.*/ rccEnablePWRInterface(FALSE); /* Initializes the backup domain.*/ hal_lld_backup_domain_init(); #if defined(STM32_DMA_REQUIRED) dmaInit(); #endif /* Programmable voltage detector enable.*/ #if STM32_PVD_ENABLE PWR->CR |= PWR_CR_PVDE | (STM32_PLS & STM32_PLS_MASK); #endif /* STM32_PVD_ENABLE */ }
/** * @brief Low level HAL driver initialization. * * @notapi */ void hal_lld_init(void) { /* Reset of all peripherals. AHB3 is not reseted because it could have been initialized in the board initialization file (board.c). Note, GPIOs are not reset because initialized before this point in board files.*/ rccResetAHB1(~STM32_GPIO_EN_MASK); #if !defined(STM32F410xx) rccResetAHB2(~0); #endif rccResetAPB1(~RCC_APB1RSTR_PWRRST); rccResetAPB2(~0); /* PWR clock enabled.*/ rccEnablePWRInterface(true); /* Initializes the backup domain.*/ hal_lld_backup_domain_init(); /* DMA subsystems initialization.*/ #if defined(STM32_DMA_REQUIRED) dmaInit(); #endif /* IRQ subsystem initialization.*/ irqInit(); /* Programmable voltage detector enable.*/ #if STM32_PVD_ENABLE PWR->CR |= PWR_CR_PVDE | (STM32_PLS & STM32_PLS_MASK); #endif /* STM32_PVD_ENABLE */ }
/** * @brief Low level HAL driver initialization. * * @notapi */ void hal_lld_init(void) { /* Reset of all peripherals. AHB3 is not reseted because it could have been initialized in the board initialization file (board.c).*/ rccResetAHB1(~0); rccResetAHB2(~0); rccResetAHB3(~0); rccResetAPB1R1(~RCC_APB1RSTR1_PWRRST); rccResetAPB1R2(~0); rccResetAPB2(~0); /* PWR clock enabled.*/ rccEnablePWRInterface(FALSE); /* Initializes the backup domain.*/ hal_lld_backup_domain_init(); #if defined(STM32_DMA_REQUIRED) dmaInit(); #endif /* Programmable voltage detector enable.*/ #if STM32_PVD_ENABLE PWR->CR1 |= PWR_CR1_PVDE | (STM32_PLS & STM32_PLS_MASK); #endif /* STM32_PVD_ENABLE */ }
static void stm32_gpio_init(void) { /* Enabling GPIO-related clocks, the mask comes from the registry header file.*/ #if defined(STM32H7) rccResetAHB4(STM32_GPIO_EN_MASK); rccEnableAHB4(STM32_GPIO_EN_MASK, true); #else rccResetAHB1(STM32_GPIO_EN_MASK); rccEnableAHB1(STM32_GPIO_EN_MASK, true); #endif /* Initializing all the defined GPIO ports.*/ #if STM32_HAS_GPIOA gpio_init(GPIOA, &gpio_default_config.PAData); #endif #if STM32_HAS_GPIOB gpio_init(GPIOB, &gpio_default_config.PBData); #endif #if STM32_HAS_GPIOC gpio_init(GPIOC, &gpio_default_config.PCData); #endif #if STM32_HAS_GPIOD gpio_init(GPIOD, &gpio_default_config.PDData); #endif #if STM32_HAS_GPIOE gpio_init(GPIOE, &gpio_default_config.PEData); #endif #if STM32_HAS_GPIOF gpio_init(GPIOF, &gpio_default_config.PFData); #endif #if STM32_HAS_GPIOG gpio_init(GPIOG, &gpio_default_config.PGData); #endif #if STM32_HAS_GPIOH gpio_init(GPIOH, &gpio_default_config.PHData); #endif #if STM32_HAS_GPIOI gpio_init(GPIOI, &gpio_default_config.PIData); #endif #if STM32_HAS_GPIOJ gpio_init(GPIOJ, &gpio_default_config.PJData); #endif #if STM32_HAS_GPIOK gpio_init(GPIOK, &gpio_default_config.PKData); #endif }