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

📄 spi_rec.c

📁 ARM LPC2129 SPI中断程序范例
💻 C
字号:
/****************************************************************************
* 文件名:SPI_rec.C
* 功能:使用硬件SPI接口接收从NUT来的数据。(此ARM设置为从机模式)
****************************************************************************/
#include  "config.h"
#define  UART_BPS	115200			/* 定义串口通讯波特率 */

uint8  i;
uint8  Data;   
uint8  rcv_data[256]={0};

void   variable_init(void);
void   __irq Spi0_Interrupt(void);
void   Spi0_Init(void);
/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口1。设置为8位数据位,1位停止位,无奇偶校验,波特率为9600   
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  UART0_Ini(void)
{  uint16 Fdiv;

   U0LCR = 0x83;		            // DLAB = 1,可设置波特率
   Fdiv = (Fpclk / 16) / UART_BPS;  // 设置波特率
   U0DLM = Fdiv / 256;							
   U0DLL = Fdiv % 256;						
   U0LCR = 0x03;                    //8位数据位,1位停止位,无奇偶校验
}
/****************************************************************************
* 名称:UART0_SendByte()
* 功能:向串口发送字节数据,并等待发送完毕。
* 入口参数:data		要发送的数据
* 出口参数:无
****************************************************************************/
void  UART0_SendByte(uint8 data)
{ 
   U0THR = data;				    // 发送数据
   while( (U0LSR&0x40)==0 );	    // 等待数据发送完毕
}
void  variable_init(void)
{
    i             = 0;
    Data          = 0;   
}
void __irq Spi0_Interrupt(void)
  {    
    Data = S0PSR;    
    rcv_data[i++] = S0PDR;
    //UART0_SendByte(rcv_data[i-1]);
        
    if(i==256) i=0;
    
    S0PINT        = 0x01;
    VICVectAddr   = 0x00;                      // 通知VIC中断处理结束
   }
/****************************************************************************
* 名    称:Spi0_Init()
* 功    能:初始化Spi0。 
****************************************************************************/
void  Spi0_Init(void)
{    
    S0PCR = 0x98;			
	/*设置Spi0中断IRQ*/
	VICIntSelect = 0x00000000; 
	VICVectCntl0 = 0x0000002A;    
    VICVectAddr0 = (uint32)Spi0_Interrupt;          
    VICIntEnable = 0x00000400;	
}  	                   
/****************************************************************************
* 名称:main()
* 功能:使用硬件SPI接口接收数据。并从UART1口将接收到的数据发送出去  
****************************************************************************/
int  main(void)
{
   PINSEL0 = 0x00005505;			// 设置SPI管脚连接和 UART0 管脚连接
   PINSEL1 = 0x00000000;   
   variable_init();
   Spi0_Init();					    // 初始化SPI中断
   UART0_Ini();
   while(1);
   return(0);
}

⌨️ 快捷键说明

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