mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-24 03:27:45 +08:00
添加了遥控器的离线检测和daemone的说明文档
This commit is contained in:
@@ -19,7 +19,9 @@ static USARTInstance *usart_instance[DEVICE_USART_CNT] = {NULL};
|
||||
|
||||
/**
|
||||
* @brief usart service will start automatically, after each module registered
|
||||
* 串口服务会在每个实例注册之后自动启用
|
||||
*
|
||||
* @todo 串口服务会在每个实例注册之后自动启用接收,当前实现为DMA接收,后续可能添加IT和BLOCKING接收
|
||||
* 可能还要将此函数修改为extern,使得module可以控制串口的启停
|
||||
*
|
||||
* @param _instance instance owned by module,模块拥有的串口实例
|
||||
*/
|
||||
@@ -55,6 +57,23 @@ void USARTSend(USARTInstance *_instance, uint8_t *send_buf, uint16_t send_size)
|
||||
HAL_UART_Transmit_DMA(_instance->usart_handle, send_buf, send_size);
|
||||
}
|
||||
|
||||
void USARTAbort(USARTInstance *_instance, USART_TRANSFER_MODE mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case USART_TRANSFER_TX:
|
||||
// if(_instance.work_mode == USART_TX_DMA)
|
||||
HAL_UART_AbortTransmit_IT(_instance->usart_handle);
|
||||
break;
|
||||
case USART_TRANSFER_RX:
|
||||
// if(_instance.work_mode == USART_RX_DMA)
|
||||
HAL_UART_AbortReceive_IT(_instance->usart_handle);
|
||||
break;
|
||||
case USART_TRANSFER_NONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 每次dma/idle中断发生时,都会调用此函数.对于每个uart实例会调用对应的回调进行进一步的处理
|
||||
* 例如:视觉协议解析/遥控器解析/裁判系统解析
|
||||
|
||||
@@ -10,6 +10,13 @@
|
||||
// 模块回调函数,用于解析协议
|
||||
typedef void (*usart_module_callback)();
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USART_TRANSFER_NONE=0,
|
||||
USART_TRANSFER_TX,
|
||||
USART_TRANSFER_RX,
|
||||
} USART_TRANSFER_MODE;
|
||||
|
||||
// 串口实例结构体,每个module都要包含一个实例
|
||||
typedef struct
|
||||
{
|
||||
@@ -36,6 +43,7 @@ USARTInstance *USARTRegister(USART_Init_Config_s *init_config);
|
||||
|
||||
/**
|
||||
* @brief 通过调用该函数可以发送一帧数据,需要传入一个usart实例,发送buff以及这一帧的长度
|
||||
* 当前默认为DMA发送,后续会增加中断发送和阻塞发送模式的选择
|
||||
*
|
||||
* @param _instance 串口实例
|
||||
* @param send_buf 待发送数据的buffer
|
||||
@@ -43,4 +51,12 @@ USARTInstance *USARTRegister(USART_Init_Config_s *init_config);
|
||||
*/
|
||||
void USARTSend(USARTInstance *_instance, uint8_t *send_buf, uint16_t send_size);
|
||||
|
||||
/**
|
||||
* @brief 通过调用该函数终止串口的发送或者接收,通过传入mode参数来选择终止发送还是接收
|
||||
*
|
||||
* @param _instance 串口实例
|
||||
* @param mode 选择终止发送还是接收的模式
|
||||
*/
|
||||
void USARTAbort(USARTInstance *_instance,USART_TRANSFER_MODE mode);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user