LPC1768之串口UART0
来源:互联网 发布:光翼网络班视频 编辑:程序博客网 时间:2024/04/30 12:57
串口操作,首先是功率,时钟控制打开。
然后是管脚选择,设置为串口模式。
然后设定串口传输数据格式。
波特率设置,(主意有小数位和没小数位时候不一样,有小数位需要设置DIVADDL和MULVAL)。
然后锁存波特率。
设定控制UARTn RX和TX FIFO的操作。
最后打开系统中UART0的中断,使能接收中断。
详见代码,代码中有详细注释。
/************************************************************************************* *main.c: the main file *NXP --> LPC1768** *Author:light*Date:2012-4-17 ****************************************************************************************/#include<LPC17XX.h>#define FOSC 12000000 /* 振荡器频率 */#define FCCLK (FOSC * 8) /* 主时钟频率<=100Mhz */ /* FOSC的整数倍 */#define FCCO (FCCLK * 3) /* PLL频率(275Mhz~550Mhz) */ /* 与FCCLK相同,或是其的偶数倍 */#define FPCLK (FCCLK / 4) /* 外设时钟频率,FCCLK的1/2、1/4*/ /* 或与FCCLK相同 */int Uart0RecvBuf; // UART0 RX DATA/********************************************************************************** Descriptions:Uart0 Initial**** parameters:baud rate ** Returned value:None*********************************************************************************/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*********************************************************************************/int Uart0SendByte(int buf){//当检测到UARTn THR已空时,THRE就会立即被设置。写UnTHR会清零THRE//0 - UnTHR包含有效字符//1 - UnTHR为空while(!((LPC_UART0->LSR) & 0x01));//等待判断LSR[5](即THRE)是否是1,1时表示THR中为空LPC_UART0->THR = buf; //发送数据return 0;}/********************************************************************************** Descriptions:Uart0 Interrupt Receive Data**** parameters:None ** Returned value:Received Data*********************************************************************************/void UART0_IRQHandler(void){Uart0RecvBuf = LPC_UART0->RBR;//读取接收数据Uart0SendByte(Uart0RecvBuf);//发送接收到的数据}/*---------------------------------------------------------------------------- The main Function *----------------------------------------------------------------------------*/int main(void){int temp;SystemInit();Uart0Init(115200);while(1){//temp = Uart0RecvByte();//查询接收数据//Uart0SendByte(temp);//发送数据}}
- LPC1768之串口UART0
- LPC1768之串口UART0
- LPC1768之串口UART0
- LPC1768 UART0
- LPC1768之UART0查询方式收发数据
- at91sam7x256之串口uart0设置之二
- at91sam7x256之gpio与串口 uart0
- UART0串口编程系列之前奏篇
- UART0串口编程系列之前奏篇
- UART0串口编程系列之前奏篇
- UART0串口编程系列之前奏篇
- UART0串口编程系列之前奏篇
- UART0串口编程系列 串口编程(UART0)之中断方式(一)
- UART0串口编程系列 串口编程(UART0)之中断方式(二)
- UART0串口编程系列 串口(UART0)之UC/OS(一)
- UART0串口编程系列 串口(UART0)之UC/OS(二)
- UART0串口编程系列(一)之轮训方式
- UART0串口编程系列(二)之中断方式
- c++:按逆序显示一个数
- 使用OPENXML函数将XML文档转换为行结果集
- 内存管理内幕动态分配的选择、折衷和实现
- Boost库学习
- 如何获取SQL Server数据库里表的占用容量大小
- LPC1768之串口UART0
- sql master数据库中两个非常有用的存储过程
- 数据结构和算法------简单排序
- error C2041: illegal digit '9' for base '8'
- 利用SQLiteOpenHelper来管理SQLite数据库
- cas入门文章
- I/O
- 1
- TDD Tip:方法内部New出来的对象如何Mock