-
void Uart0Init(uint32_t bps)
-
{
-
LPC_SC->PCONP |= (1<<3); //打开UART0功率、时钟控制位
-
-
LPC_PINCON->PINSEL0 = 0X00000050; //P0.2 P0.3设置为串口
-
-
LPC_UART0->LCR = 0x83; //设置串口数据格式,8位字符长度,1个停止位,无校验,
-
//使能访问除数锁存器 ,设定波特率
-
LPC_UART0->DLM = ((FPCLK/16)/bps) / 256; //除数高八位 , 没有小数情况
-
LPC_UART0->DLL = ((FPCLK/16)/bps) % 256; //除数第八位
-
-
LPC_UART0->LCR = 0x03; //禁止访问除数锁存器,锁定波特率
-
-
LPC_UART0->FCR = 0x07; //控制UARTn RX和TX FIFO的操作。接收数据一个字节触发中断
-
-
NVIC_EnableIRQ(UART0_IRQn); /* enable irq in nvic */
-
LPC_UART0->IER = 0x01; //使能接收中断
-
}
-
/********************************************************************************
-
** Descriptions :Uart0 Receive Data
-
**
-
** parameters :None
-
** Returned value :Received Data
-
*********************************************************************************/
-
int Uart0RecvByte(void) //查询法
-
{
-
//当UnRBR包含未读字符时,UnLSR[0]就会被置位;当UARTn RBR FIFO为空时,UnLSR[0]就会被清零
-
//0 - UnRBR为空
-
//1 - UnRBR包含有效数据
-
while(!((LPC_UART0->LSR) & 0x01)); //等待判断LSR[0]是否是1,1时表示RBR中接收到数据
-
-
return(LPC_UART0->RBR); //读取接收数据
-
}
-
/********************************************************************************
-
** Descriptions :Uart0 Send Data
-
**
-
** parameters :None
-
** Returned value :None
-
*********************************************************************************/
关闭
站长推荐
/2
文章评论(0条评论)
登录后参与讨论