Thread 中讨论的其他器件:EK-TM4C129EXL
工具/软件:TI-RTOS
您好、Ralph、
我正在尝试将 EK-TM4C129EXL 与8*8 LED 模块连接以显示一些字符。 当我尝试通过 SPI 发送0x00 (值- 0)时、显示模块中的 LED 不应亮起、但会亮起。 我无法找到为什么要关闭 LED 发光... 这是代码
/* XDCtools 头文件*/
#include
#include
#include
/* BIOS 头文件*/
#include
#include
/* TI-RTOS 头文件*/
#include
#include
//#include
/* BIOS 头文件*/
#include
/* TI-RTOS 头文件*/
#include
#include
#include
#include
#include
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#define TASKSTACKSIFunZE 1024
Task_Structure0Structure.h;
Char spi0Stack[TASKSTACKSemaphZE];#define
task =
0x00
;// volatile track sumn = 1;void 1–1–void 1–1–1–void 1–1–1–1–volatile track semtrack 1–void 1–void 1 (1) 1–1–1–1–1–1–1–1–1–1–1–1–1–1–1–1–1–volatile tle tle tle tle tle
//静态 int 计数= 0;
if (count++& 1){
Semaphore_post (sem2);
}
否则{
Semaphore_post (sem1);
}
}/*Task1
在 sem1*/
tsk1Func (UArg arg0、UArg arg1)
{上处于暂挂循环中
//GPIO_TOGGLE (Board_LED1);
while (1){
Semaphore_pend (sem1、BIOS_wait_forever);
multiplexing();
/*任务1在此工作*/
}
}/*Task2
在 sem2*/
tsk2Func (UArg0、UArgarg1)
{上处于暂挂循环中
//GPIO_TOGGLE (Board_LED0);
while (1){
Semaphore_pend (sem2、BIOS_wait_forever);
spiDataSend();
/* task2在此处工作*/
}
}void spiDataSend()
{
SPI_Handle SPI;
SPI_Params spiParams;
SPI_Params_init (&spiParams);
spiParams.dataSize = 1;/* dataSize 的范围可以是4至8位*/
spiParams.transferMode = SPI_MODE_BLOCKING;
spiParams.mode = SPI_MASTER;
spiParams.bitrate = 2000000;
spiParams.transferCallbackFxn =空;
SPI = SPI_OPEN (Board_SPI0、&spiParams);
if (SPI == NULL){
/*打开 SPI 时出错*/
}
SPI_Transaction spiTransaction;
spiTransaction.count = 8;
spiTransaction.txBuf = transmitBuffer;
spiTransaction.rxBuf =空;
SPI_transfer (SPI、&spiTransaction);
SPI_CLOSE (SPI);
}
void 多路复用()
{
GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_0,1);//代码的 LED 驱动器部分此部件工作正常...
GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_2、1);
GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_0、0);
GPIOPinWrite (GPIO_Porte _BASE,(GPIO_PIN_0|GPIO_PIN_1),rowSelect);
GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_2、0);
rowSelect++;
如果(rowSelect > 3)
{
rowSelect = 0;
}
}
/*
=== main ====
*/
int main (void)
{
/*呼叫板初始化函数*/
Board_initGeneral();
Board_initGPIO();
Board_initSPI();
GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、(GPIO_PIN_0|GPIO_PIN_1));//初始化解码器部分
GPIOPinTypeGPIOOutput (GPIO_PORTD_base、(GPIO_PIN_0|GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3));//初始化 SPI 驱动器部分
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOE))
{
}
Task_Params taskParams;
Task_Params_init (&taskParams);
taskParams.priority = 2;
taskParams.STACKSIZE = TASKSTACKSIZE;
taskParams.stack =_task0Stack;
Task_construct(&task0Struct,(Task_Functr) spiDataSend,&taskParams,NULL);
/*启动 BIOS */
BIOS_start();
返回(0);
}
您可以注意到,传输缓冲区中的值为0x00,LED 仍然亮起....
我有一定的怀疑、
SPI = SPI_OPEN (Board_SPI0、&spiParams);
--> Board_SPI0是否在 PORTD 上打开 SPI??? -->在哪一个寄存器中,发送缓冲区中的值将为 writeen???? -->我无法在 SSI_DR_DATA 中看到数据值- SSI 接收/发送数据