Files
stm32f407ve_black/BSP/Src/bsp_init.c
2026-01-22 16:36:56 +08:00

94 lines
2.5 KiB
C

/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : bsp_init.c
* @brief : Board support package initialization source file
******************************************************************************
*/
/* USER CODE END Header */
#include "bsp_init.h"
#include "bsp_config.h"
#include "stm32f4xx_hal.h"
/**
* @brief Initialize board support package
*/
void bsp_init(void) {
/* Initialize board GPIO */
bsp_gpio_init();
}
/**
* @brief Initialize board GPIO
*/
void bsp_gpio_init(void) {
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_TypeDef *gpio_port = NULL;
uint32_t gpio_pin = 0;
/* Convert HAL GPIO port to STM32 GPIO port */
switch (BSP_LED_PORT) {
case HAL_GPIO_PORT_A:
gpio_port = GPIOA;
__HAL_RCC_GPIOA_CLK_ENABLE();
break;
case HAL_GPIO_PORT_B:
gpio_port = GPIOB;
__HAL_RCC_GPIOB_CLK_ENABLE();
break;
case HAL_GPIO_PORT_C:
gpio_port = GPIOC;
__HAL_RCC_GPIOC_CLK_ENABLE();
break;
case HAL_GPIO_PORT_D:
gpio_port = GPIOD;
__HAL_RCC_GPIOD_CLK_ENABLE();
break;
case HAL_GPIO_PORT_E:
gpio_port = GPIOE;
__HAL_RCC_GPIOE_CLK_ENABLE();
break;
case HAL_GPIO_PORT_F:
gpio_port = GPIOF;
__HAL_RCC_GPIOF_CLK_ENABLE();
break;
case HAL_GPIO_PORT_G:
gpio_port = GPIOG;
__HAL_RCC_GPIOG_CLK_ENABLE();
break;
case HAL_GPIO_PORT_H:
gpio_port = GPIOH;
__HAL_RCC_GPIOH_CLK_ENABLE();
break;
case HAL_GPIO_PORT_I:
gpio_port = GPIOI;
__HAL_RCC_GPIOI_CLK_ENABLE();
break;
default: break;
}
/* Convert HAL GPIO pin to STM32 GPIO pin */
gpio_pin = 1 << BSP_LED_PIN;
if (gpio_port != NULL) {
/* Configure GPIO pin Output Level */
HAL_GPIO_WritePin(gpio_port, gpio_pin, GPIO_PIN_RESET);
/* Configure GPIO pin */
GPIO_InitStruct.Pin = gpio_pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(gpio_port, &GPIO_InitStruct);
}
}
/**
* @brief Get board name
* @retval Board name string
*/
const char* bsp_get_board_name(void) {
return BOARD_NAME;
}