LPC2366串口初始化详解:波特率配置与中断设置
5星 · 超过95%的资源 需积分: 21 30 浏览量
更新于2024-09-12
收藏 254KB DOC 举报
本文将对LPC2366微控制器的串口初始化代码进行深入解析,重点关注波特率计算、管脚配置、工作模式选择以及中断寄存器的设置。
在嵌入式系统中,串行通信接口(UART)是设备之间传输数据的一种常见方式。在LPC2366这款基于ARM7TDMI核的微控制器中,串口初始化是确保数据正确传输的关键步骤。`InitUART0`函数就是用于初始化串口0的,它接受一个参数`Baudrate`,即波特率,用来设定数据传输的速度。
首先,代码中通过设置电源控制寄存器`PCONP`的第3位来开启UART0的电源和时钟,确保串口工作所需的硬件资源可用。接着,配置引脚功能,通过修改`PINSEL0`寄存器,将相应的GPIO引脚分配给UART0的发送(TXD0)和接收(RXD0)功能。
接下来,代码进入波特率配置部分。这里使用了直接访问波特率寄存器(DLM和DLL)的方式。`U0LCR`寄存器被置位为0x80,使得DLAB(Divisor Latch Access Bit)位被激活,允许访问波特率分频器。`U0DLM`和`U0DLL`被用来设置波特率。根据给定的`Baudrate`,有不同数值的设置,例如在115200波特率下,`U0DLL`设为4,`U0FDR`设为0x85,其中`U0FDR`包含了DIVADDVAL和MULVAL,它们共同决定实际的波特率分频系数。
波特率的精确计算通常涉及到微控制器的内部时钟频率(Fpclk)和所需的波特率。公式可以表示为:`Baudrate = Fpclk / (16 * (U0DLL + 256 * U0DLM) * (1 + DIVADDVAL/MULVAL))`。这里的例子中,`U0FDR`的值被用来调整波特率的精度。
随后,`U0LCR`寄存器被设置为0x03,这表示8位数据、1个停止位和无校验的工作模式。同时,`U0FCR`寄存器设置为0x06,这初始化了FIFO,并设置了接收和发送的触发级别。接下来,代码似乎检查了一些寄存器状态,如`U0RBR`、`U0IIR`和`U0LSR`,但具体用途没有完全展示。
最后,代码涉及到了中断处理。`UART0_IRQHandler`是UART0中断服务例程的地址,它被设置到向量中断控制器(VIC)的相关向量地址寄存器,以便在接收或发送中断发生时,能正确地跳转到这个中断处理程序。设置中断优先级也是必要的,确保在需要时能够及时响应串口事件。
这段代码完成了LPC2366串口0的基本初始化,包括波特率设置、管脚分配、通信模式选择以及中断处理的准备。在实际应用中,根据系统需求和具体环境,可能还需要额外的配置,如流控设置、错误检测等。
点击了解资源详情
195 浏览量
点击了解资源详情
133 浏览量
2147 浏览量
2022-09-23 上传
1249 浏览量
411 浏览量
点击了解资源详情
bobmattson
- 粉丝: 1
- 资源: 2
最新资源
- linux常用指令介绍
- 122道Java面试题大全(包含答案)-面试宝典
- Lotus Domino邮件服务器全攻略
- MCSE(网络架构操作题)
- AutoCAD 快捷键大全
- Oracle+Call+Interface+-+Programmer's+Guide
- ASP.NET专业项目实例开发(修订版)-课件(部分)
- ucos嵌入式实时操作系统(第二版).pdf
- WebSpherePortal6.1集群安装
- rails22cn.pdf
- vimbook详细学习手册
- ArcGIS二次开发编程实例
- Netcool Omnibus 知识集锦
- Sniffer Pro 入门指南 4.7版
- ARCGIS数字化教程
- AT89S52中文资料