优化实现串口驱动,SPI驱动 W25QXX还需要初始化验证修复
This commit is contained in:
107
BSP/Src/bsp_board_manager.c
Normal file
107
BSP/Src/bsp_board_manager.c
Normal file
@ -0,0 +1,107 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : bsp_board_manager.c
|
||||
* @brief : Board support package manager source file
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#include "bsp_board_manager.h"
|
||||
#include "bsp_board.h"
|
||||
|
||||
/* Forward declarations for board configurations */
|
||||
extern const bsp_board_config_t stm32f407vet6_board_config;
|
||||
|
||||
/**
|
||||
* @brief List of supported board configurations
|
||||
*/
|
||||
static const bsp_board_config_t* supported_boards[] = {
|
||||
&stm32f407vet6_board_config,
|
||||
/* Add more board configurations here */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Current board configuration index
|
||||
*/
|
||||
static uint8_t current_board_index = 0;
|
||||
|
||||
/**
|
||||
* @brief Get number of supported boards
|
||||
* @retval Number of supported boards
|
||||
*/
|
||||
uint8_t bsp_board_get_count(void) {
|
||||
return sizeof(supported_boards) / sizeof(supported_boards[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get board configuration by index
|
||||
* @param index: Board configuration index
|
||||
* @retval Pointer to board configuration structure, NULL if invalid index
|
||||
*/
|
||||
const bsp_board_config_t* bsp_board_get_by_index(uint8_t index) {
|
||||
if (index < bsp_board_get_count()) {
|
||||
return supported_boards[index];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get board configuration by name
|
||||
* @param name: Board name string
|
||||
* @retval Pointer to board configuration structure, NULL if not found
|
||||
*/
|
||||
const bsp_board_config_t* bsp_board_get_by_name(const char* name) {
|
||||
for (uint8_t i = 0; i < bsp_board_get_count(); i++) {
|
||||
if (supported_boards[i]->name != NULL &&
|
||||
strcmp(supported_boards[i]->name, name) == 0) {
|
||||
return supported_boards[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set current board configuration by index
|
||||
* @param index: Board configuration index
|
||||
* @retval 0 if successful, -1 if invalid index
|
||||
*/
|
||||
int8_t bsp_board_set_by_index(uint8_t index) {
|
||||
if (index < bsp_board_get_count()) {
|
||||
current_board_index = index;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set current board configuration by name
|
||||
* @param name: Board name string
|
||||
* @retval 0 if successful, -1 if not found
|
||||
*/
|
||||
int8_t bsp_board_set_by_name(const char* name) {
|
||||
for (uint8_t i = 0; i < bsp_board_get_count(); i++) {
|
||||
if (supported_boards[i]->name != NULL &&
|
||||
strcmp(supported_boards[i]->name, name) == 0) {
|
||||
current_board_index = i;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get current board configuration
|
||||
* @retval Pointer to current board configuration structure
|
||||
*/
|
||||
const bsp_board_config_t* bsp_board_get_config(void) {
|
||||
return supported_boards[current_board_index];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get current board index
|
||||
* @retval Current board index
|
||||
*/
|
||||
uint8_t bsp_board_get_current_index(void) {
|
||||
return current_board_index;
|
||||
}
|
||||
Reference in New Issue
Block a user