网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
资料首页最新产品 技术参数 电路图 设计应用 解决方案 代理商查询 IC替换 IC厂商 电子辞典
关键字: 技术文章 PDF资料 IC价格 电路图 代理商查询 IC替换 IC厂商 电子辞典

LPC1768串口使用

首先,使用串口0要打开串口0的时钟

然后要配置相应的输入输出IO口为串口通讯功能

然后,要控制串口0的时钟源,1768的大部分外设时钟都可以选择从cpu时钟中进行分频

接着,需要设置串口的通讯位,停止位以及波特率等

通过该寄存器能够设置波特率

通过该寄存器可以设置通讯模式

记住,初始化完成之后需要将除数锁存变为0,使其他人不能随意修改波特率,接着对串口的fifo进行控制

使能相应的中断

然后在系统中使能相应中断通道,串口就可以用了.

在串口中断处理程序中,先清除通道中断挂起,然后清除串口相应挂起,取出数据,就可以了,详细的代码示例如下

void DebugSerialInit(u32 baud)

{

LPC_SC->PCONP = (13); //打开UART0功率、时钟控制位

LPC_PINCON->PINSEL0 = ~(0x034);

LPC_PINCON->PINSEL0 |= (0x014); //p02 tx0

LPC_PINCON->PINSEL0 = ~(0x036);

LPC_PINCON->PINSEL0 |= (0x016); //p03 rx0

LPC_UART0->LCR = 0x83; //设置串口数据格式,8位字符长度,1个停止位,无校验,

//使能访问除数锁存器 ,设定波特率

LPC_SC->PCLKSEL0 = ~(0x036); //uart0 pclk = sysclock

LPC_SC->PCLKSEL0 |= (0x016); //uart0 pclk = sysclock

LPC_UART0->DLM = ((SystemCoreClock/16)/baud) / 256; //除数高八位 , 没有小数情况

LPC_UART0->DLL = ((SystemCoreClock/16)/baud) % 256; //除数第八位

LPC_UART0->LCR = 0x03; //禁止访问除数锁存器,锁定波特率

LPC_UART0->FCR = 0x00; //禁止FIFO

NVIC_ClearPendingIRQ(UART0_IRQn);

NVIC_SetPriority(UART0_IRQn,NVIC_EncodePriority(SYS_NVIC_GROUP,UART0_PreemptPriority,UART0_SubPriority));

NVIC_EnableIRQ(UART0_IRQn); /* enable irq in nvic */

LPC_UART0->IER = 0x01; //使能接收中断

}

串口中断处理程序如下

void UART0_IRQHandler(void)

{

u8 Res;

NVIC_ClearPendingIRQ(UART0_IRQn);

Res = LPC_UART0->RBR; //读取接收数据,读取中断自动清零

DebugSerialSendChar(Res);

}

注意一点,在不使用小数寄存器的情况下,115200的的波特率,串口的外设时钟最好在100M,否则串口的波特率的误差比较大,容易造成通讯失败。

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

热门搜索:SS361220 PSF3612 BSV17-16 BT152-500R/600R PS240810 DRV8313PWPR BT151S-800R118 RBC11A UL800CB-15 02T0500JF 02M5000JF TLM626NS LED12-C2 2320089 2817958 02M0500JF SS7619-15 2856142 2838319 TLP1210SATG 01M2251SFC3 B30-8000-PCB SBB1602-1 TLP712B 2320351
COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
客户服务:service@IC72.com 库存上载:IC72@IC72.com
(北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质