实现串口驱动,移植方便
This commit is contained in:
20
BSP/CMakeLists.txt
Normal file
20
BSP/CMakeLists.txt
Normal file
@ -0,0 +1,20 @@
|
||||
cmake_minimum_required(VERSION 3.22)
|
||||
|
||||
# Add BSP library
|
||||
add_library(bsp STATIC)
|
||||
|
||||
# Add BSP sources
|
||||
target_sources(bsp PRIVATE
|
||||
Src/bsp_init.c
|
||||
)
|
||||
|
||||
# Add BSP include directories
|
||||
target_include_directories(bsp PUBLIC
|
||||
Inc
|
||||
)
|
||||
|
||||
# Link BSP dependencies
|
||||
target_link_libraries(bsp PRIVATE
|
||||
stm32cubemx
|
||||
hal
|
||||
)
|
||||
41
BSP/Inc/bsp_config.h
Normal file
41
BSP/Inc/bsp_config.h
Normal file
@ -0,0 +1,41 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : bsp_config.h
|
||||
* @brief : Board support package configuration file
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#ifndef BSP_CONFIG_H
|
||||
#define BSP_CONFIG_H
|
||||
|
||||
#include "hal_gpio.h"
|
||||
|
||||
/**
|
||||
* @brief Board name definition
|
||||
*/
|
||||
#define BOARD_NAME "STM32F407VET6"
|
||||
|
||||
/**
|
||||
* @brief LED hardware configuration
|
||||
*/
|
||||
#define BSP_LED_PORT HAL_GPIO_PORT_A
|
||||
#define BSP_LED_PIN HAL_GPIO_PIN_6
|
||||
|
||||
/**
|
||||
* @brief Button hardware configuration (if available)
|
||||
*/
|
||||
/* #define BSP_BUTTON_PORT HAL_GPIO_PORT_X */
|
||||
/* #define BSP_BUTTON_PIN HAL_GPIO_PIN_X */
|
||||
|
||||
/**
|
||||
* @brief UART hardware configuration
|
||||
*/
|
||||
#define BSP_UART_INSTANCE USART1
|
||||
#define BSP_UART_BAUDRATE 115200
|
||||
#define BSP_UART_PARITY HAL_UART_PARITY_NONE
|
||||
#define BSP_UART_STOPBITS HAL_UART_STOPBITS_1
|
||||
#define BSP_UART_DATABITS HAL_UART_DATABITS_8
|
||||
|
||||
#endif /* BSP_CONFIG_H */
|
||||
29
BSP/Inc/bsp_init.h
Normal file
29
BSP/Inc/bsp_init.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : bsp_init.h
|
||||
* @brief : Board support package initialization header file
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#ifndef BSP_INIT_H
|
||||
#define BSP_INIT_H
|
||||
|
||||
/**
|
||||
* @brief Initialize board support package
|
||||
*/
|
||||
void bsp_init(void);
|
||||
|
||||
/**
|
||||
* @brief Initialize board GPIO
|
||||
*/
|
||||
void bsp_gpio_init(void);
|
||||
|
||||
/**
|
||||
* @brief Get board name
|
||||
* @retval Board name string
|
||||
*/
|
||||
const char* bsp_get_board_name(void);
|
||||
|
||||
#endif /* BSP_INIT_H */
|
||||
93
BSP/Src/bsp_init.c
Normal file
93
BSP/Src/bsp_init.c
Normal file
@ -0,0 +1,93 @@
|
||||
/* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user