actuator/users/Inc/uarts.h

88 lines
2.0 KiB
C

#ifndef _UARTS_H_
#define _UARTS_H_
#include "usart.h"
#include "stdio.h"
#include "modbus.h"
#include "laser.h"
#define osel_memset _memset
#define osel_memcmp _memcmp
#define osel_memcpy memcpyL
#define osel_memcpyr memcpyR
extern uint8_t usart_flag;
extern uint8_t array1[255];
static inline void _memset(uint8_t *dst, uint8_t value, uint16_t size)
{
while (size--)
{
*dst++ = value;
}
}
static inline int8_t _memcmp(const uint8_t *dst, const uint8_t *src, uint16_t size)
{
while (size--)
{
if (*dst++ != *src++)
{
return -1;
}
}
return 0;
}
static inline void memcpyL(uint8_t *dst, const uint8_t *src, uint16_t size)
{
while (size--)
{
*dst++ = *src++;
}
}
static inline void memcpyR(uint8_t *dst, const uint8_t *src, uint16_t size)
{
dst = dst + (size - 1);
while (size--)
{
*dst-- = *src++;
}
}
// 比较2个数组是否相等
#define IsEqual(arr1, arr2, n) ({ \
int _equal = 1; \
for (int _i = 0; _i < n; _i++) \
{ \
if (arr1[_i] != arr2[_i]) \
{ \
_equal = 0; \
break; \
} \
} \
_equal; \
})
// ASSIC码转换为16进制
#define CHAR_TO_NUM(c, num) \
do \
{ \
if ((c) >= '0' && (c) <= '9') \
{ \
(num) = (c) - '0'; \
} \
else \
{ \
num = 0; \
} \
} while (0)
int fputc(int ch, FILE *f);//重定义printf函数
void uart_send(UART_HandleTypeDef *huart,uint8_t *Tx_Buf,uint16_t Size);
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);//RTU串口接收中断处理
#endif