📄 spi_test.c
字号:
#include "DSP28_Device.h"
unsigned int *LedReg = (unsigned int *)0x23FF;
unsigned int *Led8Lock = (unsigned int *)0x25FF;
const Uint16 LedCode[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
const Uint16 SpiCode[]={0xC0C0,0XF9F9,0XA4A4,0XB0B0,0X9999,0X9292,0X8282,0XF8F8,0X8080,0X9090,0X8888,0X8383,0XC6C6,0XA1A1,0X8686,0X8E8E,0XFFFF};
Uint16 LedCount =0;
Uint16 Led8Count=0;
interrupt void ISRTimer0(void);
interrupt void ISRTimer2(void);
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/* 关中断 */
DINT;
IER = 0x0000;
IFR = 0x0000;
/* 初始化PIE控制寄存器 */
InitPieCtrl();
/* 初始化PIE参数表 */
InitPieVectTable();
/* 初始化外设寄存器 */
InitPeripherals();
InitSpi();
EALLOW;
PieVectTable.TINT0 = &ISRTimer0;
PieVectTable.TINT2 = &ISRTimer2;
EDIS;
/*设置CPU*/
ConfigCpuTimer(&CpuTimer0, 10, 1000000);
ConfigCpuTimer(&CpuTimer2, 50, 1000000);
StartCpuTimer0();
StartCpuTimer2();
/*开中断*/
IER |= M_INT14;
IER |= M_INT1;
PieCtrl.PIEIER1.bit.INTx7=1;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
*LedReg = 0xFF;
*Led8Lock = 0xB7;
LedCount= 0;
if(Spi_TxReady() == 1)
{
SpiaRegs.SPITXBUF = 0XFFFF;
*Led8Lock = 0xB7;
*Led8Lock = 0xBF;
}
for(;;);
}
interrupt void ISRTimer0(void)
{
PieCtrl.PIEACK.bit.ACK7=1;
*LedReg = LedCode[LedCount];
LedCount++;
if (LedCount>8) LedCount=0;
}
interrupt void ISRTimer2(void)
{
if(Spi_TxReady() == 1)
{
SpiaRegs.SPITXBUF = SpiCode[Led8Count];
*Led8Lock = 0xB7;
*Led8Lock = 0xBF;
}
Led8Count++;
if (Led8Count>16) Led8Count=0;
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -