From 21a5a2e7839dd991a83bf37ff78c01979d774e9e Mon Sep 17 00:00:00 2001 From: yelvlab Date: Fri, 20 Dec 2024 16:56:05 +0800 Subject: [PATCH] add calculate CRC function --- inc/rs485.h | 1 + src/rs485.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/inc/rs485.h b/inc/rs485.h index f1f15e2..8040541 100644 --- a/inc/rs485.h +++ b/inc/rs485.h @@ -12,6 +12,7 @@ #include #include #include +#include #define RS485_RCU RCU_USART0 #define RS485_GPIO_RCU RCU_GPIOA diff --git a/src/rs485.c b/src/rs485.c index 9348e87..73e93e0 100644 --- a/src/rs485.c +++ b/src/rs485.c @@ -53,3 +53,18 @@ void process_command(char *cmd) { printf("Invalid Command!\r\n"); } } + +uint8_t calculate_crc(uint8_t package_header[3], uint8_t package_data[], size_t data_length) { + uint8_t crc = 0; + + /* Calculate CRC for header */ + for (int i = 1; i < 3; i++) { + crc += package_header[i]; + } + + for (size_t i = 0; i < data_length; i++) { + crc += package_data[i]; + } + + return (uint8_t)(crc & 0xFF); +}