【发布时间】:2021-09-28 01:47:29
【问题描述】:
我正在尝试拆分我的代码,但由于函数calculateNmeaChecksum()...
这是我的两个文件:
Main.c:
#include "main.h"
#include "UART_functions.c"
char checksum;
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SDMMC1_SD_Init();
MX_TIM5_Init();
MX_TIM16_Init();
MX_FATFS_Init();
MX_SPI1_Init();
MX_SPI2_Init();
MX_USART1_UART_Init();
HAL_TIM_Base_Start_IT(&htim16);
checksum = calculateNmeaChecksum("$PMTKLOG,456,0,11,31,2,0,0,0,3769,46*48");
while (1)
{
}
}
UART_functions.c
unsigned char calculateNmeaChecksum(const char *s)
{
unsigned char result;
result = 0;
s++; // Skip dollar sign
while ((*s != '*') && (*s != '\0'))
result ^= *s++;
return result;
}
当我尝试编译时出现此错误:
UART_GPS\UART_GPS.axf: Error: L6200E: Symbol calculateNmeaChecksum multiply defined (by uart_functions.o and main.o).
【问题讨论】:
-
你能把你的问题添加到结尾吗?
-
校验和应该是一个无符号字符,而不仅仅是一个字符
-
对不起,我刚刚编辑了
-
@AdrienG。我试着改成无符号字符,还是不行……
-
尝试删除函数参数中的 const