⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi_dtk.c

📁 用DSP平台开发的关于SPI通信的源码程序
💻 C
字号:
#include "SEED-DSK2407.h"
#include "SPI.h" 
#include "comm.h" 

#define  FRAMLONGTH 2

unsigned int spi_data=0;  
unsigned int recieve_over = 0;
unsigned int recieve_count = 0;
unsigned int recieve_check = 0;

unsigned int recieve[0x208] = {0};
unsigned int frame_data[0x104] = {0}; 

void sysreset(void);
void ledturnon(void);
void ledturnoff(void);

void main()
{
	unsigned int i=0;
	
	DINT;
	SystemInit();
	SpiInit();
    /*WHEN THE SPI PROGRAM RUN ,TURN ON THE LED2*/
    *MCRC     &= 0xBFFF;
    *PFDATDIR |=0x4040;
    
	*IFR = 0x3f;
	*IMR = 0x01;
	EINT; 

	for(;;)
	{   
		while(recieve_over == 0) {};
		     
		recieve_over = 0;	
	    	
	}
}

void SystemInit(void)
{
	WSGR = 0;	
	*WDCR = 0xE8;
	*SCSR1 = 0x0020;
}

void SpiInit(void)
{
	*MCRB = 0x3c;
	
	*SPICCR = 0x4f;
	*SPICTL = 0x03;
	*SPIBRR = 0x31;
	*SPIPRI = 0x10;	
	*SPICCR = 0xcf; 
}


interrupt void PHANTOM(void)
{

} 

interrupt void c_int1(void)
{   
    unsigned int i;
	if((*PIVR & 0x05) == 0x05)
	{
		recieve[recieve_count] = *SPIRXBUF; 
		recieve_count++;
		if(recieve_count==FRAMLONGTH)
		{   
		    switch(recieve[0])
	       { 
	    		case SPISENDDATA:
	    	     	ledturnon();
	    	     	*SPITXBUF = recieve[1]; 
	    	    	break;
	    		case SYSRESET:
	    	     	ledturnoff();
	    	    	 sysreset();
	    	     	break;     
            	default:
                 	break;
           }     
		    recieve_over  = 1;
		    recieve_count = 0;   
		}		
	}
	*IFR &=0x0001;
	EINT; 	
}

void sysreset(void)
{
	WSGR = 0;	
	*WDCR = 0x08;
	for(;;){};
	/*
	asm(" B 768H "); */
}   

void ledturnon()
{
	LED = 0x0F;	
}

void ledturnoff()
{
	LED = 0x00;	
}			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -