您的位置 首页 5G

LPC1768串口运用

Lpc1768内置了四个串口通讯模块,都是异步通讯模块,其中,串口0/2/3是普通串口通讯,串口1与 UART0/2/3 基本相同,只是增加了一个 Modem 接口和 RS-486/E

Lpc1768内置了四个串口通讯模块,都是异步通讯模块,其间,串口0/2/3是一般串口通讯,串口1与 UART0/2/3 根本相同,仅仅增加了一个 Modem 接口和 RS-486/EIA-486 形式,不支持 IrDA,咱们今日以串口0来演示串口的运用.

首要,运用串口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,不然串口的波特率的差错比较大,简单形成通讯失利。

『本文转载自网络,版权归原作者一切,如有侵权请联络删去』

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/148316.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部