我遇到一个奇怪的问题。在我的程序中,我包含一个名为“ system.h”的头文件,其中包含某些寄存器的地址定义。问题是,当我尝试使用这些定义的符号之一时,收到错误消息“无法解析符号的符号名称”。当我在源文件中重新定义符号时,它起作用。这不是一个好的解决方案,因为我使用的是“ NIOS2” CPU,因此无论何时我在QSYS中进行更改,地址都会更改。有谁知道如何解决这个问题?
预先感谢, 干杯。
#include "DISPLAY_7SEG.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "stdint.h"
//#define SEGMENT_BASE 0x11020
//#define DIGIT_BASE 0x11040
//#define OFF 100
void display(int display)
{
switch(display)
{
case 100:
IOWR_ALTERA_AVALON_PIO_DATA(SEGMENT_BASE,0x0);
break;
case 0:
IOWR_ALTERA_AVALON_PIO_DATA(SEGMENT_BASE,0x1);
IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(LED_BASE,0xF);
break;
case 1:
IOWR_ALTERA_AVALON_PIO_DATA(SEGMENT_BASE,0x2);
IOWR_ALTERA_AVALON_PIO_SET_BITS(LED_BASE,0xF);
break;
case 2:
IOWR_ALTERA_AVALON_PIO_DATA(SEGMENT_BASE,0x4);
IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(LED_BASE,0xF);
break;
case 3:
IOWR_ALTERA_AVALON_PIO_DATA(SEGMENT_BASE,0x8);
IOWR_ALTERA_AVALON_PIO_SET_BITS(LED_BASE,0xF);
break;
default:
IOWR_ALTERA_AVALON_PIO_DATA(SEGMENT_BASE,0x0);
break;
}
}