添加了遥控器的离线检测和daemone的说明文档

This commit is contained in:
NeoZng
2023-01-04 21:26:11 +08:00
parent 48370d4411
commit 3db2a20a0e
14 changed files with 135 additions and 41 deletions

View File

@@ -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实例会调用对应的回调进行进一步的处理
* 例如:视觉协议解析/遥控器解析/裁判系统解析

View File

@@ -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