工具/软件:Code Composer Studio
我不熟悉 CCS、我将 TM4C1294用于 SPI 通信、将 SSI0用作主器件、将 SSI2用作从器件、我收到此错误。
下面给出了代码、我收到以下错误:
说明资源 类型
gmake:***[main.obj]错误1 TMSPI C/C++问题
说明 资源 类型
gmake:***[tm4c1294ncpdt_startup_ccs.obj]错误1 TMSPI C/C++问题
说明资源 类型
gmake:目标"全部"不会由于错误而重新生成。 TMSPI C/C++问题
#include
#include
#include
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/ssi.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#define NUM_SSI_DATA 15.
/*SSI 初始化函数*/
//
//
//此函数将 UART0设置为用于控制台显示信息
//因为示例正在运行。
//
//
无效
InitConsole (空)
{
//
//启用用于 UART0引脚的 GPIO 端口 A。
// TODO:将其更改为您正在使用的 GPIO 端口。
//
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
//
//为端口 A0和 A1上的 UART0功能配置引脚复用。
//如果您的器件不支持引脚复用、则无需执行此步骤。
// TODO:更改此选项以选择您正在使用的端口/引脚。
//
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
//
//启用 UART0以便我们可以配置时钟。
//
SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
//
//使用内部16MHz 振荡器作为 UART 时钟源。
//
UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC);
//
//为这些引脚选择替代(UART)功能。
// TODO:更改此选项以选择您正在使用的端口/引脚。
//
GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
//
//初始化控制台 I/O 的 UART
//
UARTStdioConfig (0、115200、16000000);
}
空 SSI_init (空)
{
uint32_t ui32SysClkFreq;
uint32_t temp;
ui32SysClkFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA3_SSI0FSS);
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);
GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);
SSIConfigSetExpClk (SSI0_BASE、ui32SysClkFreq、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、10000、 8);
SSIEnable (SSI0_BASE);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI2); //启用 SSI2
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);//启用端口 B GPIO 以与 SSI2数据和帧信号配合使用
GPIOPinConfigure (GPIO_PD3_SSI2CLK);
GPIOPinConfigure (GPIO_PD2_SSI2FSS);
GPIOPinConfigure (GPIO_PD1_SSI2XDAT0);
GPIOPinConfigure (GPIO_PD0_SSI2XDAT1);
GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SSIConfigSetExpClk (SSI2_base、ui32SysClkFreq、SSI_FRF_MOTO_MOTO_0、SSI_MODE_SLAVE、10000、 8);
SSIEnable (SSI2_base);
}
/*function,用于从 SSI2中的 ssi0读取数据,并将其写回 ssi0,并将两者进行比较*/
void main (void)
{
uint32_t ui32Index;
uint32_t ui32Data;
char SPI_DATA_Received_Back [NUM_SSI_DATA];
uint32_t SPI_received_char;
const char SPI_TEST_COMMAN[NUM_SSI_DATA]={"这是一个测试\0"};
bool pass 或失败;
InitConsole();
SSI_init();
memset (SPI_DATA_Received_Back、"\0"、NUM_SSI_DATA);
for (ui32Index = 0;ui32Index < NUM_SSI_DATA;ui32Index++)
{
ui32Data = SPI_TEST_COMMAN[ui32Index];
SSIDataPut (SSI0_BASE、ui32Data);
// SSIDataGet 会等待直到收到字符
SSIDataGet (SSI0_BASE、&SPI_Received_char);//虚拟读取至空主 Rx 缓冲器
SSIDataGet (SSI2_base、&SPI_received_char);//从从 Rx 缓冲区获取数据
SSIDataPut (SSI2_base、SPI_Received_char); //发送回主器件
spi_data_received_back [ui32Index]=(char) spi_received_char;
}
if (strcmp (spi_test_command、spi_data_received_back)==0)
{
PASS_OR_FAIL = 1;
UARTprintf ("\n\rPASSED\n"\});
}
其他
{
PASS_OR_FAIL = 0;
UARTprintf ("\n\rFAILED\n\r");
}
返回;
}