LPC2214 SPI及UART初始化程序

//SPI1口发数
void spi1senddata(uint8 data)
{  
IO0CLR = le58_ctrl_cs;    // 片选
   
S1PDR = data;
while(0==(S1PSR&0x80)); // 等待SPIF置位,即等待数据发送完毕
   
IO0SET = le58_ctrl_cs;
}

/****************************************************************************
* 名称:UART0_Init()
* 功能:串口工作参数设置。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART0_Init(void)
{ uint16 Fdiv;


  U0LCR = 0x03;    //8位字长度,1位停止位,无校验,禁止间隔发送单个字符。
  
  U0FCR = 0x00;    // 不使能FIFO,并设置触发点为4字节。    
        
  // 设置波特率
  U0LCR = 0x83;     //DLAB =1,允许访问分频器
  Fdiv = (Fpclk / 16) / UART0_BAUD;  
  U0DLM =  TRUCT_MSB8(Fdiv);
  U0DLL =  TRUCT_LSB8(Fdiv);
  U0LCR = 0x03;      //DLAB =0,才允许访问U0RBR和U0THR
  
  U0IER = 0x01;                //只允许RBR中断(即接收中断和接收FIFO超时中断)
}


/****************************************************************************
串口0发送字节
****************************************************************************/
void  UART0_SendByte(uint8 data)
{  
U0THR = data;    // 发送数据
    while( (U0LSR&0x20)==0 );    // 等待数据发送完毕
}


/****************************************************************************
* 名称:IRQ_UART0()
* 功能:串口UART0接收中断。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void   __irq IRQ_UART0(void)
{     
if( 0x04==(U0IIR&0x0E) )      // RDA标志
    {
    receive_data=U0RBR;
rcv_new=1;
ready=1;
}
 
else if(0x0C==(U0IIR&0x0E) ) // CTI标志
{
while(U0LSR & 0x01)      //读数据,直到FIFO为空
{
receive_data=U0RBR;
rcv_new=1;
ready=1;
}
}
VICVectAddr = 0x00;               // 中断处理结束   
}


/****************************************************************************
* 名称:UART1_Init()
* 功能:串口工作参数设置。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART1_Init(void)
{ uint16 Fdiv;


  U1LCR = 0x03;    //8位字长度,1位停止位,无校验,禁止间隔发送单个字符。
  
  U1FCR = 0x00;    // 不使能FIFO,并设置触发点为4字节。    
        
  // 设置波特率
  U1LCR = 0x83;     //DLAB =1,允许访问分频器
  Fdiv = (Fpclk / 16) / UART1_BAUD;  
  U1DLM =  TRUCT_MSB8(Fdiv);
  U1DLL =  TRUCT_LSB8(Fdiv);
  U1LCR = 0x03;      //DLAB =0,才允许访问U1RBR和U1THR
  
  U1IER = 0x01;                //只允许RBR中断(即接收中断和接收FIFO超时中断)
}




/****************************************************************************
串口1发送字节
****************************************************************************/
void  UART1_SendByte(uint8 data)
{  
U1THR = data;    // 发送数据
    while( (U1LSR&0x20)==0 );    // 等待数据发送完毕
}


/****************************************************************************
* 名称:spi1_Init()
* 功能:串口工作参数设置。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void spi1_init(void)
{
S1PCCR = 0x52; // 设置SPI时钟分频
    S1PCR = 0x20;     // 设置SPI接口模式,MSTR=1,CPOL=0,CPHA=0,LSBF=0
}







































猜你喜欢

转载自blog.csdn.net/gaojy19881225/article/details/80036716
今日推荐