feat: 添加协议处理和校验和计算功能,更新 UART 相关代码

This commit is contained in:
2026-04-02 01:52:28 +08:00
parent 8d2a0ea0c8
commit a53aa38ed3
11 changed files with 390 additions and 40 deletions

24
Core/Bsp/checksum.c Normal file
View File

@@ -0,0 +1,24 @@
#include <stdint.h>
/**
* @brief 计算校验和
* @param buf: 数据缓冲区指针 (即你的 uart1_rx_buf)
* @param start_pos: 校验数据的起始下标 (通常跳过帧头 "LOGI:")
* @param length: 需要校验的数据长度 (不包含校验位本身和帧尾)
* @return uint8_t: 计算得出的校验和
*
* 算法说明: 将所有字节相加取低8位 (相当于 % 256)
*/
uint8_t Calculate_CheckSum(uint8_t *buf, uint16_t start_pos, uint16_t length)
{
uint32_t sum = 0; // 使用32位防止累加溢出虽然uint8累加也不会溢出单片机寄存器
uint16_t i;
for (i = 0; i < length; i++)
{
sum += buf[start_pos + i];
}
// 返回低8位相当于 sum % 256
return (uint8_t)(sum & 0xFF);
}