📄 spi_test.c
字号:
#include "DSP28_Device.h"
unsigned int Spi_VarRx[100];
unsigned int i,j;
unsigned int jjj;
interrupt void ISRTimer0(void);
//interrupt void ISRSciaTx(void);
//interrupt void ISRSciaRx(void);
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/* 关中断 */
DINT;
IER = 0x0000;
IFR = 0x0000;
/* 初始化PIE控制寄存器 */
InitPieCtrl();
/* 初始化PIE参数表 */
InitPieVectTable();
/* 初始化外设寄存器 */
InitPeripherals();
InitSpi();
for(i = 0; i < 100; i++)
{
Spi_VarRx[i] = 0;
}
i = 0;
j = 0;
InitCpuTimers();
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TINT0 = &ISRTimer0;
EDIS; // This is needed to disable write to EALLOW protected registers
ConfigCpuTimer(&CpuTimer0, 150, 400); //400是400微秒,150是150个周期
// int1.7 timer0 / int1.6 adc / int1.4 XINT1 / int9.1 sci-a / int9.3 sci-b;在书上45页可见
PieCtrl.PIEIER1.all=0x40; //0100 0000 timer0
/* 设置IER寄存器 */
// IER |= M_INT6;//0x0020
/* 开中断 */
IER=0x0021; //开SPI和CPUTIMER中断
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
CpuTimer0Regs.TCR.bit.TSS = 0; //TSS=0启动CPUTIMER定时器,TSS=1关闭CPUTIMER定时器
jjj=0;
for(;;){}
}
interrupt void ISRTimer0(void)
{
if(Spi_TxReady() == 1)
{
SpiaRegs.SPITXBUF = i;
i++;
if(i == 100)
{
i = 0;
}
}
if(SpiaRegs.SPIFFRX.bit.RXFFINT==1)
{
for(i=0;i<100;i++)
Spi_VarRx[i]=SpiaRegs.SPIRXBUF;
}
PieCtrl.PIEACK.all = 1; //enalbe next interrupt
}
/*
interrupt void ISRSciaTx(void)
{
PieCtrl.PIEACK.bit.ACK6 = 1;
EINT;
}
interrupt void ISRSciaRx(void)
{
PieCtrl.PIEACK.bit.ACK6 = 1;
if(Spi_RxReady() == 1)
{
Spi_VarRx[j] = SpiaRegs.SPIRXBUF;
j++;
if(j == 100)
{
j = 0;
}
}
EINT;
}
*/
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -