47 lines
1.5 KiB
C
47 lines
1.5 KiB
C
#ifndef BSP_RC_H
|
|
#define BSP_RC_H
|
|
|
|
#include <stdint.h>
|
|
#include "main.h"
|
|
|
|
#define DEVICE_USART_CNT 3 // C板至多分配3个串口
|
|
#define USART_RXBUFF_LIMIT 256 // 如果协议需要更大的buff,请修改这里
|
|
|
|
// 模块回调函数,用于解析协议
|
|
typedef void (*usart_module_callback)();
|
|
|
|
// 串口实例结构体,每个module都要包含一个实例
|
|
typedef struct
|
|
{
|
|
uint8_t recv_buff[USART_RXBUFF_LIMIT]; // 预先定义的最大buff大小,如果太小请修改USART_RXBUFF_LIMIT
|
|
uint8_t recv_buff_size; // 模块接收一包数据的大小
|
|
UART_HandleTypeDef *usart_handle; // 实例对应的usart_handle
|
|
usart_module_callback module_callback; // 解析收到的数据的回调函数
|
|
} USARTInstance;
|
|
|
|
/* 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 init_config 传入串口初始化结构体
|
|
*/
|
|
USARTInstance *USARTRegister(USART_Init_Config_s *init_config);
|
|
|
|
/**
|
|
* @brief 通过调用该函数可以发送一帧数据,需要传入一个usart实例,发送buff以及这一帧的长度
|
|
*
|
|
* @param _instance 串口实例
|
|
* @param send_buf 待发送数据的buffer
|
|
* @param send_size how many bytes to send
|
|
*/
|
|
void USARTSend(USARTInstance *_instance, uint8_t *send_buf, uint16_t send_size);
|
|
|
|
#endif
|