×
单片机 > 单片机程序设计 > 详情

LPC2214 SPI及UART初始化程序

发布时间:2020-09-02 发布时间:
|

//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

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法