LPC1768之串口UART0
来源:互联网 发布:苹果平板淘宝怎么横屏 编辑:程序博客网 时间:2024/04/30 12:06
转自:http://blog.csdn.net/bmbm546/article/details/7471670
串口操作,首先是功率,时钟控制打开。
然后是管脚选择,设置为串口模式。
然后设定串口传输数据格式。
波特率设置,(主意有小数位和没小数位时候不一样,有小数位需要设置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); //发送数据
- }
- }
0 0
- 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串口编程系列(二)之中断方式
- 【转载】Java 6 JVM参数选项大全(中文版)
- cloudstack基本概念(1.结构)
- UVa:106 Fermat vs. Pythagoras
- Xcode配置SVN详细步骤
- 测试覆盖率工具汇总
- LPC1768之串口UART0
- arcgis server directory 404
- NET 弹出窗口选择返回值
- Linux内核互斥锁
- 快捷累积
- Android图片内存优化
- Linux进程管理之CFS调度器分析
- webdriver页面元素等待问题处理方法
- linux线程浅析