98 lines
2.8 KiB
C
98 lines
2.8 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_board.h"
|
|
#include "bsp_board_manager.h"
|
|
#include "hal.h"
|
|
#include "hal_gpio.h"
|
|
#include "hal_uart.h"
|
|
|
|
/**
|
|
* @brief Initialize board support package
|
|
*/
|
|
void bsp_init(void) {
|
|
/* Get board configuration */
|
|
const bsp_board_config_t* board_config = bsp_board_get_config();
|
|
|
|
/* Initialize HAL layer */
|
|
hal_init();
|
|
|
|
/* Initialize peripherals based on configuration */
|
|
|
|
/* Initialize LED */
|
|
if (board_config->led_init != NULL) {
|
|
board_config->led_init(&board_config->led);
|
|
} else {
|
|
/* Use default initialization if no function provided */
|
|
hal_gpio_config_t gpio_config = {
|
|
.port = board_config->led.port,
|
|
.pin = board_config->led.pin,
|
|
.mode = board_config->led.mode,
|
|
.speed = board_config->led.speed,
|
|
.pull = board_config->led.pull
|
|
};
|
|
hal_gpio_configure_pin(&gpio_config);
|
|
}
|
|
|
|
/* Initialize Button */
|
|
if (board_config->button_init != NULL) {
|
|
board_config->button_init(&board_config->button);
|
|
}
|
|
|
|
/* Initialize UART */
|
|
if (board_config->uart_init != NULL) {
|
|
board_config->uart_init(&board_config->uart);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Initialize board GPIO using configuration
|
|
*/
|
|
void bsp_gpio_init(void) {
|
|
/* Get board configuration */
|
|
const bsp_board_config_t* board_config = bsp_board_get_config();
|
|
|
|
/* Initialize LED GPIO */
|
|
hal_gpio_config_t gpio_config = {
|
|
.port = board_config->led.port,
|
|
.pin = board_config->led.pin,
|
|
.mode = board_config->led.mode,
|
|
.speed = board_config->led.speed,
|
|
.pull = board_config->led.pull
|
|
};
|
|
hal_gpio_configure_pin(&gpio_config);
|
|
|
|
/* Initialize Button GPIO if configured */
|
|
if (board_config->button.port != 0 && board_config->button.pin != 0) {
|
|
gpio_config.port = board_config->button.port;
|
|
gpio_config.pin = board_config->button.pin;
|
|
gpio_config.mode = board_config->button.mode;
|
|
gpio_config.speed = board_config->button.speed;
|
|
gpio_config.pull = board_config->button.pull;
|
|
hal_gpio_configure_pin(&gpio_config);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Get board name
|
|
* @retval Board name string
|
|
*/
|
|
const char* bsp_get_board_name(void) {
|
|
return bsp_board_get_name();
|
|
}
|
|
|
|
/**
|
|
* @brief Get current board configuration
|
|
* @retval Pointer to board configuration structure
|
|
*/
|
|
const bsp_board_config_t* bsp_get_board_config(void) {
|
|
return bsp_board_get_config();
|
|
}
|