?? spi.c
字號:
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
Uint16 table[10]={0x0000,0x00001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009};
void delay();
void spi_fifo_init(void);
void main(void)
{
Uint16 k=0,m=0,n=0,p=0,num=0;
InitSysCtrl(); //系統初始化
EALLOW; //關閉保護
GpioMuxRegs.GPFMUX.all=0x000F; //設置通用引腳為SPI引腳
EDIS; // 打開保護
DINT; //關總中斷
IER = 0x0000;
IFR = 0x0000; //清除中斷標志
InitPieCtrl(); //初始化PIE控制寄存器
InitPieVectTable(); //初始化PIE向量表
PieCtrlRegs.PIECRTL.bit.ENPIE = 1; //使能從PIE單元獲取中斷向量
PieCtrlRegs.PIEIER6.bit.INTx2=1;
IER=0x20;
spi_fifo_init(); //SPI初始化
/////////////////////MAX7219初始化/////////////////////
SpiaRegs.SPITXBUF=0x09ff; //譯碼方式
while(SpiaRegs.SPISTS.bit.INT_FLAG==0); //等待數據發送完
delay();
// delay();
SpiaRegs.SPITXBUF=0x0A0a; ///亮度0-f
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
// delay();
SpiaRegs.SPITXBUF=0x0B03; //掃描范圍,0-7位數碼管
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
// delay();
SpiaRegs.SPITXBUF=0x0C01; //停機方式,開啟(1);停機(0)
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
// delay();
SpiaRegs.SPITXBUF=0x0F00; //測試模式,開(1),關(0)
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
// delay();
////////////////向MAX7219發送數字//////////////////////
while(1)
{
p=num/1000; //千位
SpiaRegs.SPITXBUF=0x0100|table[p]; //|p;
while(SpiaRegs.SPISTS.bit.INT_FLAG==0); //等待數據發送完
delay();
// delay();
n=(num-p*1000)/100; //百位
SpiaRegs.SPITXBUF=0x0200|table[n];
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
// delay();
m=(num-p*1000-n*100)/10; //十位
SpiaRegs.SPITXBUF=0x0300|table[m];
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
// delay();
k=num-p*1000-n*100-m*10; //個位
SpiaRegs.SPITXBUF=0x0400|table[k];
while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
delay();
//delay();
num++;
if(num==9999){num=0;}
delay();
//delay();
}
}
void spi_fifo_init()
{
SpiaRegs.SPICCR.bit.SPISWRESET=0; //清除SPI操作標志位,改變SPI配置
SpiaRegs.SPICCR.all=0x000F; //SPI配置寄存器,字符長度為16
SpiaRegs.SPICTL.all=0x000e; //SPI操作寄存器,為主機模式
SpiaRegs.SPIBRR=0x0066; //SPI波特率寄存器,
SpiaRegs.SPICCR.bit.SPISWRESET=1; //完成SPI配置
}
void delay(void)
{
int i,j;
for(i=0;i<500;i++)
{ for(j=0;j<300;j++);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -