#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