我正在使用 LPC824 板和下载的 lpcxpresso824max_new_project 开发一个新项目。编译、下载和调试过程均未出现问题。我最初尝试实现一个3位数的7段LED显示屏。我在 peripherals.h 中添加了声明。以及 main.c 中的更新例程。编译时出现两个错误——重复的变量声明。如果我把它们注释掉,就会收到“未声明的变量”消息。如果我更改变量名称,也会出现同样的重复错误。我已经搜索了项目中的每个源文件,没有找到任何重复项。其中一条错误信息是:-
/Applications/MCUXpressoIDE_25.6.136/ide/plugins/com.nxp.mcuxpresso.tools.macosx_25.6.0.202501151204/tools/bin/../lib/gcc/arm-none-eabi/14.2.1/../../../../arm-none-eabi/bin/ld: ./source/peripherals.o:/Users/julian/Documents/MCUXpressoIDE_25.6.136/workspace/lpcxpresso824max_new_project/Debug/../source/peripherals.h:57: 多个定义“CA_LUT”; ./source/main.o:/Users/julian/Documents/MCUXpressoIDE_25.6.136/workspace/lpcxpresso824max_new_project/Debug/../source/peripherals.h:57: 首次在此处定义
你好,
请问您能否分享一下您的 peripherals.h 文件?文件和外设.c?或者描述一下你是如何添加 CA_LUT 声明的?
请问您能否分享一下在 main.c 文件中是如何使用 CA_LUT 的?
请分享所有包含 [#include "peripherals.h"] 的文件名称,这些头文件是否包含在 main.c 中?
此致敬礼,路易斯
这是 peripherals.h 中的条目两种错误
// 数字 0-9 的查找表(0 = 开,1 = 关)
const uint32_t CA_LUT[10] = {
//0:A、B、C、D、E、F 开启;G、DP 关闭
~((1<
~((1<
~((1<
~((1<
~((1<
~((1<
~((1<
~((1<
~((1<
~((1<
// 全局变量,用于保存要打印在第 1、2 和 3 位数字上的当前数字。
volatile uint8_t display_buffer[3] = {1, 2, 3}; // 例如,显示“123”
这两个错误都在 main.c 中使用。:-
uint8_t numeric_value = display_buffer[current_digit];
uint32_t segment_pattern = CA_LUT[numeric_value];
#include "peripherals.h"仅出现在以下文件中:-
main.c、peripherals.c、
正如我之前提到的,我来自 CodeWarrior,所以我对MCUX 的了解可能很危险(????)。我不确定七段数码管是否属于外围设备(peripherals.h)。c) 或引脚数量的声明(pin_mux.h)c),但这个问题以后可以解决。
您好,
可能是因为你在 peripherals.h 中定义了 CA_LUT。主程序和外围程序。c调用该文件时出现重复错误“多重定义”。
能否请您帮忙尝试在 peripherals.c 文件中添加 CA_LUT 的声明?而不是 peripherals.h,然后重试;
你的 peripherals.h 文件中还有其他类似的声明吗?它们也会出现同样的错误吗?如果您有这些文件,请将它们也移动到 peripherals.c 文件中。
把你的7个段想象成一个外部外围设备。
请告诉我你的发现
顺祝商祺!