Compare commits

...

2 Commits

Author SHA1 Message Date
e22ed7f393 更新 2025-09-07 14:10:30 +08:00
ab3445ef6d 保存 2025-09-07 12:41:50 +08:00
6 changed files with 29 additions and 4 deletions

View File

@ -243,6 +243,9 @@ static void BSP_CAN_TxAbortCallback(CAN_HandleTypeDef *hcan) {
void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan) { void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan) {
BSP_CAN_t bsp_can = CAN_Get(hcan); BSP_CAN_t bsp_can = CAN_Get(hcan);
if (bsp_can != BSP_CAN_ERR) { if (bsp_can != BSP_CAN_ERR) {
// 自动释放发送信号量
BSP_CAN_TxCompleteCallback(hcan);
// 调用用户回调
if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_CPLT_CB]) if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_CPLT_CB])
CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_CPLT_CB](); CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_CPLT_CB]();
} }
@ -251,6 +254,9 @@ void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan) {
void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan) { void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan) {
BSP_CAN_t bsp_can = CAN_Get(hcan); BSP_CAN_t bsp_can = CAN_Get(hcan);
if (bsp_can != BSP_CAN_ERR) { if (bsp_can != BSP_CAN_ERR) {
// 自动释放发送信号量
BSP_CAN_TxCompleteCallback(hcan);
// 调用用户回调
if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_CPLT_CB]) if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_CPLT_CB])
CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_CPLT_CB](); CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_CPLT_CB]();
} }
@ -259,6 +265,9 @@ void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan) {
void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan) { void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan) {
BSP_CAN_t bsp_can = CAN_Get(hcan); BSP_CAN_t bsp_can = CAN_Get(hcan);
if (bsp_can != BSP_CAN_ERR) { if (bsp_can != BSP_CAN_ERR) {
// 自动释放发送信号量
BSP_CAN_TxCompleteCallback(hcan);
// 调用用户回调
if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_CPLT_CB]) if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_CPLT_CB])
CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_CPLT_CB](); CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_CPLT_CB]();
} }
@ -267,6 +276,9 @@ void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan) {
void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan) { void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan) {
BSP_CAN_t bsp_can = CAN_Get(hcan); BSP_CAN_t bsp_can = CAN_Get(hcan);
if (bsp_can != BSP_CAN_ERR) { if (bsp_can != BSP_CAN_ERR) {
// 自动释放发送信号量
BSP_CAN_TxAbortCallback(hcan);
// 调用用户回调
if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_ABORT_CB]) if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_ABORT_CB])
CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_ABORT_CB](); CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX0_ABORT_CB]();
} }
@ -275,6 +287,9 @@ void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan) {
void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan) { void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan) {
BSP_CAN_t bsp_can = CAN_Get(hcan); BSP_CAN_t bsp_can = CAN_Get(hcan);
if (bsp_can != BSP_CAN_ERR) { if (bsp_can != BSP_CAN_ERR) {
// 自动释放发送信号量
BSP_CAN_TxAbortCallback(hcan);
// 调用用户回调
if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_ABORT_CB]) if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_ABORT_CB])
CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_ABORT_CB](); CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX1_ABORT_CB]();
} }
@ -283,6 +298,9 @@ void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan) {
void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan) { void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan) {
BSP_CAN_t bsp_can = CAN_Get(hcan); BSP_CAN_t bsp_can = CAN_Get(hcan);
if (bsp_can != BSP_CAN_ERR) { if (bsp_can != BSP_CAN_ERR) {
// 自动释放发送信号量
BSP_CAN_TxAbortCallback(hcan);
// 调用用户回调
if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_ABORT_CB]) if (CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_ABORT_CB])
CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_ABORT_CB](); CAN_Callback[bsp_can][HAL_CAN_TX_MAILBOX2_ABORT_CB]();
} }

View File

@ -42,6 +42,9 @@ typedef enum {
/* Exported functions prototypes -------------------------------------------- */ /* Exported functions prototypes -------------------------------------------- */
UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart); UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart);
void BSP_UART_IRQHandler(UART_HandleTypeDef *huart);
int8_t BSP_UART_RegisterCallback(BSP_UART_t uart, BSP_UART_Callback_t type, int8_t BSP_UART_RegisterCallback(BSP_UART_t uart, BSP_UART_Callback_t type,
void (*callback)(void)); void (*callback)(void));

View File

@ -213,6 +213,10 @@ devices:
dependencies: dependencies:
bsp: ["uart"] bsp: ["uart"]
component: [] component: []
bsp_requirements:
- type: "uart"
var_name: "BSP_UART_VOFA" # 需要替换的变量名
description: "用于VOFA数据传输"
thread_signals: [] thread_signals: []
files: files:
header: "vofa.h" header: "vofa.h"

View File

@ -18,7 +18,7 @@
/* Exported functions ------------------------------------------------------- */ /* Exported functions ------------------------------------------------------- */
float MOTOR_GetRotorAbsAngle(const MOTOR_t *motor) { float MOTOR_GetRotorAbsAngle(const MOTOR_t *motor) {
if (motor == NULL) return DEVICE_ERR_NULL; if (motor == NULL) return DEVICE_ERR_NULL;
motor->feedback.rotor_abs_angle; return motor->feedback.rotor_abs_angle;
} }
float MOTOR_GetRotorSpeed(const MOTOR_t *motor) { float MOTOR_GetRotorSpeed(const MOTOR_t *motor) {

View File

@ -5,14 +5,14 @@
#include "bsp/uart.h" #include "bsp/uart.h"
/* Private define ----------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */
#define MAX_CHANNEL 64u // 根据实际最大通道数调整 #define MAX_CHANNEL 64u // 根据实际最大通道数调整
#define JUSTFLOAT_TAIL 0x7F800000 #define JUSTFLOAT_TAIL 0x7F800000
/* Private macro ------------------------------------------------------------ */ /* Private macro ------------------------------------------------------------ */
/* Private typedef ---------------------------------------------------------- */ /* Private typedef ---------------------------------------------------------- */
/* Private variables -------------------------------------------------------- */ /* Private variables -------------------------------------------------------- */
static uint8_t vofa_tx_buf[sizeof(float) * MAX_CHANNEL + sizeof(uint32_t)]; static uint8_t vofa_tx_buf[sizeof(float) * MAX_CHANNEL + sizeof(uint32_t)];
static VOFA_Protocol_t current_protocol = VOFA_PROTOCOL_FIREWATER; // 默认协议 static VOFA_Protocol_t current_protocol = VOFA_PROTOCOL_FIREWATER; // 默认协议
/* Private function -------------------------------------------------------- */ /* Private function -------------------------------------------------------- */

View File

@ -6,7 +6,7 @@ extern "C" {
/* Includes ----------------------------------------------------------------- */ /* Includes ----------------------------------------------------------------- */
#include "bsp/uart.h" #include "bsp/uart.h"
#include ”device/device.h“ #include "device/device.h"
/* Exported constants ------------------------------------------------------- */ /* Exported constants ------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */ /* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */ /* Exported types ----------------------------------------------------------- */