From 19c071b2a04d7a139cc35762f9b0d7505b4656f1 Mon Sep 17 00:00:00 2001 From: RB Date: Sun, 27 Apr 2025 15:25:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=B8=B2=E5=8F=A3=E7=9A=84bs?= =?UTF-8?q?p?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/bsp/gpio.c | 0 User/bsp/gpio.h | 0 User/bsp/i2c.c | 104 ------------------------------------------------ User/bsp/i2c.h | 43 -------------------- User/bsp/led.c | 61 ---------------------------- User/bsp/led.h | 36 ----------------- User/bsp/uart.c | 14 +++++-- User/bsp/uart.h | 4 +- 8 files changed, 14 insertions(+), 248 deletions(-) delete mode 100644 User/bsp/gpio.c delete mode 100644 User/bsp/gpio.h delete mode 100644 User/bsp/i2c.c delete mode 100644 User/bsp/i2c.h delete mode 100644 User/bsp/led.c delete mode 100644 User/bsp/led.h diff --git a/User/bsp/gpio.c b/User/bsp/gpio.c deleted file mode 100644 index e69de29..0000000 diff --git a/User/bsp/gpio.h b/User/bsp/gpio.h deleted file mode 100644 index e69de29..0000000 diff --git a/User/bsp/i2c.c b/User/bsp/i2c.c deleted file mode 100644 index b510e26..0000000 --- a/User/bsp/i2c.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Includes ----------------------------------------------------------------- */ -#include "bsp\i2c.h" - -/* Private define ----------------------------------------------------------- */ -/* Private macro ------------------------------------------------------------ */ -/* Private typedef ---------------------------------------------------------- */ -/* Private variables -------------------------------------------------------- */ -static void (*I2C_Callback[BSP_I2C_NUM][BSP_I2C_CB_NUM])(void); - -/* Private function -------------------------------------------------------- */ -static BSP_I2C_t I2C_Get(I2C_HandleTypeDef *hi2c) { - if (hi2c->Instance == I2C1) return BSP_I2C_OLED; - else - return BSP_I2C_ERR; -} - -void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_MASTER_TX_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_MASTER_TX_CPLT_CB](); - } -} - -void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_MASTER_RX_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_MASTER_RX_CPLT_CB](); - } -} - -void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_SLAVE_TX_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_SLAVE_TX_CPLT_CB](); - } -} - -void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_SLAVE_RX_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_SLAVE_RX_CPLT_CB](); - } -} - -void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_LISTEN_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_LISTEN_CPLT_CB](); - } -} - -void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_MEM_TX_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_MEM_TX_CPLT_CB](); - } -} - -void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_MEM_RX_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_MEM_RX_CPLT_CB](); - } -} - -void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_ERROR_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_ERROR_CB](); - } -} - -void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) { - BSP_I2C_t bsp_i2c = I2C_Get(hi2c); - if (bsp_i2c != BSP_I2C_ERR) { - if (I2C_Callback[bsp_i2c][HAL_I2C_ABORT_CPLT_CB]) - I2C_Callback[bsp_i2c][HAL_I2C_ABORT_CPLT_CB](); - } -} - -/* Exported functions ------------------------------------------------------- */ -I2C_HandleTypeDef *BSP_I2C_GetHandle(BSP_I2C_t i2c) { - switch (i2c) { - case BSP_I2C_OLED: - return &hi2c1; - default: - return NULL; - } -} - -int8_t BSP_I2C_RegisterCallback(BSP_I2C_t i2c, BSP_I2C_Callback_t type, - void (*callback)(void)) { - if (callback == NULL) return BSP_ERR_NULL; - I2C_Callback[i2c][type] = callback; - return BSP_OK; -} diff --git a/User/bsp/i2c.h b/User/bsp/i2c.h deleted file mode 100644 index 1c91d21..0000000 --- a/User/bsp/i2c.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ----------------------------------------------------------------- */ -#include - -#include "bsp/bsp.h" - -/* Exported constants ------------------------------------------------------- */ -/* Exported macro ----------------------------------------------------------- */ -/* Exported types ----------------------------------------------------------- */ -/* I2C实体枚举,与设备对应 */ -typedef enum { - BSP_I2C_OLED, - BSP_I2C_NUM, - BSP_I2C_ERR, -} BSP_I2C_t; - -/* I2C支持的中断回调函数类型,具体参考HAL中定义 */ -typedef enum { - HAL_I2C_MASTER_TX_CPLT_CB, - HAL_I2C_MASTER_RX_CPLT_CB, - HAL_I2C_SLAVE_TX_CPLT_CB, - HAL_I2C_SLAVE_RX_CPLT_CB, - HAL_I2C_LISTEN_CPLT_CB, - HAL_I2C_MEM_TX_CPLT_CB, - HAL_I2C_MEM_RX_CPLT_CB, - HAL_I2C_ERROR_CB, - HAL_I2C_ABORT_CPLT_CB, - BSP_I2C_CB_NUM, -} BSP_I2C_Callback_t; - -/* Exported functions prototypes -------------------------------------------- */ -I2C_HandleTypeDef *BSP_I2C_GetHandle(BSP_I2C_t i2c); -int8_t BSP_I2C_RegisterCallback(BSP_I2C_t i2c, BSP_I2C_Callback_t type, - void (*callback)(void)); - -#ifdef __cplusplus -} -#endif diff --git a/User/bsp/led.c b/User/bsp/led.c deleted file mode 100644 index 22018ab..0000000 --- a/User/bsp/led.c +++ /dev/null @@ -1,61 +0,0 @@ -/* Includes ----------------------------------------------------------------- */ -#include "bsp\led.h" - -#include - -/* Private define ----------------------------------------------------------- */ -/* Private macro ------------------------------------------------------------ */ -/* Private typedef ---------------------------------------------------------- */ -/* Private variables -------------------------------------------------------- */ -static uint32_t led_stats; - -/* Private function -------------------------------------------------------- */ -/* Exported functions ------------------------------------------------------- */ - -int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s, float duty_cycle) { - if (duty_cycle > 1.0f) return BSP_ERR; - - uint32_t tim_ch; - uint16_t pulse = (uint16_t)(duty_cycle * (float)UINT16_MAX); - - switch (ch) { - case BSP_LED_1: - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, pulse); - tim_ch = TIM_CHANNEL_2; - break; - - case BSP_LED_2: - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, pulse); - tim_ch = TIM_CHANNEL_3; - break; - - case BSP_LED_3: - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, pulse); - tim_ch = TIM_CHANNEL_1; - break; - } - - switch (s) { - case BSP_LED_ON: - HAL_TIM_PWM_Start(&htim2, tim_ch); - led_stats |= tim_ch; - break; - - case BSP_LED_OFF: - HAL_TIM_PWM_Stop(&htim2, tim_ch); - led_stats &= ~tim_ch; - break; - - case BSP_LED_TAGGLE: - if (led_stats & tim_ch) { - HAL_TIM_PWM_Stop(&htim2, tim_ch); - led_stats &= ~tim_ch; - } else { - HAL_TIM_PWM_Start(&htim2, tim_ch); - led_stats |= tim_ch; - } - break; - } - - return BSP_OK; -} diff --git a/User/bsp/led.h b/User/bsp/led.h deleted file mode 100644 index a329657..0000000 --- a/User/bsp/led.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ----------------------------------------------------------------- */ -#include - -#include "bsp/bsp.h" - -/* Exported constants ------------------------------------------------------- */ -/* Exported macro ----------------------------------------------------------- */ -/* Exported types ----------------------------------------------------------- */ - -/* LED灯状态,设置用 */ -typedef enum { - BSP_LED_ON, - BSP_LED_OFF, - BSP_LED_TAGGLE, -} BSP_LED_Status_t; - -/* LED通道 */ -typedef enum { - BSP_LED_1, - BSP_LED_2, - BSP_LED_3, -} BSP_LED_Channel_t; - -/* Exported functions prototypes -------------------------------------------- */ - -int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s, float duty_cycle); - -#ifdef __cplusplus -} -#endif diff --git a/User/bsp/uart.c b/User/bsp/uart.c index e82eba5..331c0fb 100644 --- a/User/bsp/uart.c +++ b/User/bsp/uart.c @@ -9,8 +9,12 @@ static void (*UART_Callback[BSP_UART_NUM][BSP_UART_CB_NUM])(void); /* Private function -------------------------------------------------------- */ static BSP_UART_t UART_Get(UART_HandleTypeDef *huart) { - if (huart->Instance == USART1) - return BSP_UART_SINDT; + if (huart->Instance == UART1) + return BSP_UART_UART1; + else if (huart->Instance == UART2) + return BSP_UART_UART2; + else if (huart->Instance == UART3) + return BSP_UART_UART3; else return BSP_UART_ERR; } @@ -99,8 +103,12 @@ void BSP_UART_IRQHandler(UART_HandleTypeDef *huart) { UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart) { switch (uart) { - case BSP_UART_SINDT: + case BSP_UART_UART1: return &huart1; + case BSP_UART_UART2: + return &huart2; + case BSP_UART_UART3: + return &huart3; default: return NULL; } diff --git a/User/bsp/uart.h b/User/bsp/uart.h index 576dd05..8f25cf6 100644 --- a/User/bsp/uart.h +++ b/User/bsp/uart.h @@ -17,7 +17,9 @@ extern "C" { /* UART实体枚举,与设备对应 */ typedef enum { - BSP_UART_SINDT, + BSP_UART_UART1, + BSP_UART_UART2, + BSP_UART_UART3, BSP_UART_NUM, BSP_UART_ERR, } BSP_UART_t;