84 lines
1.9 KiB
C
84 lines
1.9 KiB
C
#ifndef _UARTS_H_
|
|
#define _UARTS_H_
|
|
|
|
#include "usart.h"
|
|
#include "stdio.h"
|
|
#include "modbus.h"
|
|
|
|
#define osel_memset _memset
|
|
#define osel_memcmp _memcmp
|
|
#define osel_memcpy memcpyL
|
|
#define osel_memcpyr memcpyR
|
|
|
|
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
|
|
|