mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-24 11:37:45 +08:00
将底层的封装统一为相同的格式
This commit is contained in:
@@ -55,28 +55,30 @@ static void CANServiceInit()
|
||||
HAL_CAN_ActivateNotification(&hcan2, CAN_IT_RX_FIFO1_MSG_PENDING);
|
||||
}
|
||||
|
||||
/* -----------------------two extern callable function -----------------------*/
|
||||
/* ----------------------- two extern callable function -----------------------*/
|
||||
|
||||
void CANRegister(can_instance *ins, can_instance_config_s* config)
|
||||
can_instance* CANRegister(can_instance_config_s* config)
|
||||
{
|
||||
static uint8_t idx;
|
||||
if (!idx)
|
||||
{
|
||||
CANServiceInit();
|
||||
}
|
||||
instance[idx] = ins;
|
||||
instance[idx] = (can_instance*)malloc(sizeof(can_instance));
|
||||
memset(instance[idx],0,sizeof(can_instance));
|
||||
|
||||
instance[idx]->txconf.StdId = config->tx_id;
|
||||
instance[idx]->txconf.IDE = CAN_ID_STD;
|
||||
instance[idx]->txconf.RTR = CAN_RTR_DATA;
|
||||
instance[idx]->txconf.DLC = 0x08;
|
||||
instance[idx]->txconf.DLC = 0x08; // 默认发送长度为8
|
||||
|
||||
instance[idx]->can_handle = config->can_handle;
|
||||
instance[idx]->tx_id = config->tx_id;
|
||||
instance[idx]->rx_id = config->rx_id;
|
||||
instance[idx]->can_module_callback = config->can_module_callback;
|
||||
|
||||
CANAddFilter(instance[idx++]);
|
||||
CANAddFilter(instance[idx]);
|
||||
return instance[idx++];
|
||||
}
|
||||
|
||||
void CANTransmit(can_instance *_instance)
|
||||
|
||||
@@ -51,7 +51,7 @@ void CANTransmit(can_instance *_instance);
|
||||
* @param config init config
|
||||
* @return can_instance* can instance owned by module
|
||||
*/
|
||||
void CANRegister(can_instance *instance, can_instance_config_s *config);
|
||||
can_instance* CANRegister(can_instance_config_s *config);
|
||||
|
||||
/**
|
||||
* @brief 修改CAN发送报文的数据帧长度;注意最大长度为8,在没有进行修改的时候,默认长度为8
|
||||
|
||||
@@ -31,11 +31,19 @@ static void USARTServiceInit(usart_instance *_instance)
|
||||
__HAL_DMA_DISABLE_IT(_instance->usart_handle->hdmarx, DMA_IT_HT);
|
||||
}
|
||||
|
||||
void USARTRegister(usart_instance *_instance)
|
||||
usart_instance* USARTRegister(USART_Init_Config_s *init_config)
|
||||
{
|
||||
static uint8_t instance_idx;
|
||||
USARTServiceInit(_instance);
|
||||
instance[instance_idx++] = _instance;
|
||||
static uint8_t idx;
|
||||
|
||||
instance[idx]=(usart_instance*)malloc(sizeof(usart_instance));
|
||||
memset(instance[idx],0,sizeof(usart_instance));
|
||||
|
||||
instance[idx]->module_callback=init_config->module_callback;
|
||||
instance[idx]->recv_buff_size=init_config->recv_buff_size;
|
||||
instance[idx]->usart_handle=init_config->usart_handle;
|
||||
USARTServiceInit(instance[idx]);
|
||||
|
||||
return instance[idx++];
|
||||
}
|
||||
|
||||
/* @todo 当前仅进行了形式上的封装,后续要进一步考虑是否将module的行为与bsp完全分离 */
|
||||
|
||||
@@ -20,12 +20,20 @@ typedef struct
|
||||
usart_module_callback module_callback; // 解析收到的数据的回调函数
|
||||
} usart_instance;
|
||||
|
||||
/* usart 初始化配置结构体 */
|
||||
typedef struct
|
||||
{
|
||||
uint8_t recv_buff_size; // 模块接收一包数据的大小
|
||||
UART_HandleTypeDef *usart_handle; // 实例对应的usart_handle
|
||||
usart_module_callback module_callback; // 解析收到的数据的回调函数
|
||||
} USART_Init_Config_s;
|
||||
|
||||
/**
|
||||
* @brief 注册一个串口实例.
|
||||
*
|
||||
* @param _instance 传入一个由module拥有的串口实例,注意在传入前进行基本信息的配置,详见usart_instance的struct定义
|
||||
* @param init_config 传入串口初始化结构体
|
||||
*/
|
||||
void USARTRegister(usart_instance *_instance);
|
||||
usart_instance* USARTRegister(USART_Init_Config_s *init_config);
|
||||
|
||||
/**
|
||||
* @todo 是否需要进一步封装发送buff和size,并创建一个串口任务以一定频率自动发送?
|
||||
|
||||
Reference in New Issue
Block a user