This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

使用头文件"utils/uartstdio.h"产生unresolved symbols remain的问题

在引用头文件"utils/uartstdio.h"时一旦使用该头文件包含的函数时,CCS就会报错内容为

<Linking>

undefined first referenced
symbol in file
--------- ----------------
UARTprintf ./main.obj

error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "SSI.out" not built

是不是工程配置有问题?

源代码如下|

#include<stdint.h>
#include<stdbool.h>
#include"inc/hw_memmap.h"
#include"driverlib/gpio.h"
#include"driverlib/pin_map.h"
#include"driverlib/ssi.h"
#include"driverlib/uart.h"
#include"driverlib/sysctl.h"
#include "utils/uartstdio.h"
#define NUM_SSI_DATA 3
//串口初始化函数
void InitConsole(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
//使用16MHZ内部时钟源作为串口时钟
UARTClockSourceSet(UART0_BASE,UART_CLOCK_PIOSC);
GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);
//串口号、波特率、时钟频率
UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(),115200,(UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|UART_CONFIG_PAR_NONE));
}

int main(void)
{
uint32_t pui32DataTX[NUM_SSI_DATA];
uint32_t pui32DataRX[NUM_SSI_DATA];
uint32_t ui32Index;

SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
InitConsole();
//UARTprintf("ssi ->\n");
//UARTprintf("Mode:spi\n");
//UARTprintf("Data:8-bit\n\n");
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinConfigure(GPIO_PA2_SSI0CLK);
GPIOPinConfigure(GPIO_PA3_SSI0FSS);
GPIOPinConfigure(GPIO_PA4_SSI0RX);
GPIOPinConfigure(GPIO_PA5_SSI0TX);

GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);
//SSI0_BASE/时钟频率、时钟协议,moto代表SPI协议、工作模式:主机模式、位速率1M、数据帧位数为8
SSIConfigSetExpClk(SSI0_BASE,SysCtlClockGet(),SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,1000000,8);
SSIEnable(SSI0_BASE);
while(SSIDataPutNonBlocking(SSI0_BASE,&pui32DataRX[0]));//确保RXFIFO中没有数据

pui32DataTX[0]='s';
pui32DataTX[1]='P';
pui32DataTX[2]='i';

UARTprintf("sent:\n");


for(ui32Index=0;ui32Index<NUM_SSI_DATA;ui32Index++)
{
//UARTprintf("'%C'",pui32DataTX[ui32Index]);
SSIDataPut(SSI0_BASE,pui32DataTX[ui32Index]);
}
//等待SSI0将所有数据发送到FIFO中
while(SSIBusy(SSI0_BASE));

//UARTprintf("\nReceived:\n");

for(ui32Index=0;ui32Index<NUM_SSI_DATA;ui32Index++)
{
SSIDataGet(SSI0_BASE,&pui32DataRX[ui32Index]);
pui32DataRX[ui32Index]&=0x00FF;
//UARTprintf("'%C'",pui32DataRX[ui32Index]);
}
}