mirror of
https://github.com/goldenfishs/MRobot.git
synced 2025-04-28 21:34:59 +08:00
添加device-uart模板
This commit is contained in:
parent
05b2c1387d
commit
2dc317f5ce
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"uart.h": "c"
|
||||
}
|
||||
}
|
@ -10,11 +10,10 @@ static void (*UART_Callback[BSP_UART_NUM][BSP_UART_CB_NUM])(void);
|
||||
/* Private function -------------------------------------------------------- */
|
||||
static BSP_UART_t UART_Get(UART_HandleTypeDef *huart) {
|
||||
if (huart->Instance == USART1)
|
||||
return BSP_UART_UART1;
|
||||
else if (huart->Instance == USART2)
|
||||
return BSP_UART_UART2;
|
||||
else if (huart->Instance == USART3)
|
||||
return BSP_UART_UART3;
|
||||
return BSP_UART_PC;
|
||||
|
||||
/*else */
|
||||
|
||||
else
|
||||
return BSP_UART_ERR;
|
||||
}
|
||||
@ -103,12 +102,8 @@ void BSP_UART_IRQHandler(UART_HandleTypeDef *huart) {
|
||||
|
||||
UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart) {
|
||||
switch (uart) {
|
||||
case BSP_UART_USART1:
|
||||
case BSP_UART_PC:
|
||||
return &huart1;
|
||||
case BSP_UART_USART2:
|
||||
return &huart2;
|
||||
case BSP_UART_USART3:
|
||||
return &huart3;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
@ -17,9 +17,8 @@ extern "C" {
|
||||
|
||||
/* UART实体枚举,与设备对应 */
|
||||
typedef enum {
|
||||
BSP_UART_USART1,
|
||||
BSP_UART_USART2,
|
||||
BSP_UART_USART3,
|
||||
BSP_UART_PC,
|
||||
/*BSP_UART_??*/
|
||||
BSP_UART_NUM,
|
||||
BSP_UART_ERR,
|
||||
} BSP_UART_t;
|
||||
|
54
User/device/uart_pc.c
Normal file
54
User/device/uart_pc.c
Normal file
@ -0,0 +1,54 @@
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include "uart.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "bsp\uart.h"
|
||||
#include "device.h"
|
||||
|
||||
#define AI_LEN_RX_BUFF (sizeof(UART_RxData_t))
|
||||
|
||||
static bool rx_flag = false;
|
||||
|
||||
static uint8_t rxbuf[AI_LEN_RX_BUFF];
|
||||
|
||||
static void UART_RxCpltCallback(void) { rx_flag = true; }
|
||||
|
||||
int UART_Init(UART_t *huart)
|
||||
{
|
||||
UNUSED(huart);
|
||||
HAL_UART_Receive_DMA(&BSP_UART_PC, rxbuf, AI_LEN_RX_BUFF);
|
||||
return DEVICE_OK
|
||||
}
|
||||
|
||||
int UART_StartReceive(UART_t *huart)
|
||||
{
|
||||
UNUSED(huart);
|
||||
HAL_UART_Receive_DMA(&BSP_UART_PC, rxbuf, AI_LEN_RX_BUFF);
|
||||
return DEVICE_OK;
|
||||
}
|
||||
|
||||
bool UART_IsReceiveComplete(void)
|
||||
{
|
||||
return rx_flag;
|
||||
}
|
||||
|
||||
int8_t UART_ParseData(UART_t *huart)
|
||||
{
|
||||
|
||||
memcpy(&huart->rx_data, rxbuf, sizeof(UART_RxData_t));
|
||||
}
|
||||
|
||||
void UART_PackTx(UART_t *huart, UART_TxData_t *tx_data)
|
||||
{
|
||||
memcpy(tx_data, huart->tx_data, sizeof(UART_TxData_t));
|
||||
}
|
||||
|
||||
int8_t UART_StartSend(UART_t *huart)
|
||||
{
|
||||
if (HAL_UART_Transmit_DMA(&BSP_UART_PC, huart->tx_data, sizeof(UART_TxData_t)) == HAL_OK)
|
||||
{
|
||||
return DEVICE_OK
|
||||
}
|
||||
return DEVICE_ERROR;
|
||||
}
|
50
User/device/uart_pc.h
Normal file
50
User/device/uart_pc.h
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
UART通讯模板
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/* Exported constants ------------------------------------------------------- */
|
||||
/* Exported macro ----------------------------------------------------------- */
|
||||
/* Exported types ----------------------------------------------------------- */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t head;
|
||||
uint8_t data;
|
||||
uint8_t crc;
|
||||
} UART_RxData_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t head;
|
||||
uint8_t data;
|
||||
uint8_t crc;
|
||||
} UART_TxData_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UART_RxData_t rx_data; // Received data buffer
|
||||
UART_TxData_t tx_data; // Transmit data buffer
|
||||
} UART_t;
|
||||
|
||||
/* Exported functions prototypes -------------------------------------------- */
|
||||
|
||||
int UART_Init(UART_t *huart);
|
||||
int UART_StartReceive(UART_t *huart);
|
||||
bool UART_IsReceiveComplete(void);
|
||||
int8_t UART_ParseData(UART_t *huart);
|
||||
void UART_PackTx(UART_t *huart, UART_TxData_t *tx_data);
|
||||
int8_t UART_StartSend(UART_t *huart);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user