ARM嵌入式UART初始化程序解释

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UART初始化程序解释

姓名:xxx

学号:20185228000

0x4004 8080) 位描述

复位值

允许I/O 配置模块的时钟0 12允许UART 的时钟0

0x4004 8098) 位描述

复位值

0x00

DIV 的值为0x0 可以关

UART相关寄存器配置

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟LPC_IOCON->PIO1_6 &= ~0x07;

LPC_IOCON->PIO1_6 |= 0x01; //把P1.6脚设置为RXD

LPC_IOCON->PIO1_7 &= ~0x07;

LPC_IOCON->PIO1_7 |= 0x01; //把P1.7脚设置为TXD

LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟

LPC_SYSCON->UARTCLKDIV = 0x1;//时钟分频值为1

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12);//允许UART时钟

复位值0

00x4000 800C)

0x4000 800C)

复位值

0奇校验。发送字符和附带的校验位中1 的个数为奇数Array

偶校验。发送字符和附带的校验位中1 的个数为偶数

0x4000 800C)

复位值

0 U0LCR[6] 为高电平有效时,输出

复位值UART除数锁存LSB寄存器与U0DLM寄存器一0x010

0x4000 8000 当DLAB = 1) 位域描述

UART 除数锁存是UART 波特率发生器的一部分,并且保持使用的值,与分数分频器一起对UART_PCLK 时钟分频来产生波特率时钟,波特率时钟是波特率的16 倍。U0DLL 和U0DLM 寄存器一起构成一个16 位除数,其中U0DLL 包含除数的低8 位,U0DLM 包含除数的高8 位;值0x0000 被看作是0x0001,因为除数是不允许为0。当访问UART 除数锁存寄存器时,U0LCR 中的除数锁存访问位(DLAB)必须为1

复位值UART除数锁存MSB寄存器与U0DLL寄存器一0x000

0x4000 8004 当DLAB = 1) 位域描述

0x4000 8008, 只写) 位域描述

复位

U0FCR 控制UART0 RX 和TXFIFOs 的操作。

0x4000 8008, 只写) 位域描述

复位

U0FCR 控制UART0 RX 和TXFIFOs 的操作。

相关寄存器配置及波特率计算

LPC_UART->LCR = 0x83; //8位传输,1个停止位,无几偶校验,允许访问除数锁

; //计算该波特率要求的除数锁存寄

//写除数锁存器高位值

//写除数锁存器低位值

DLM 和DLL 为标准UART 波特率除数寄存器。

UART相关寄存器配置

void UART_init(uint32_t baudrate)

{

uint32_t DL_value;

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟

LPC_IOCON->PIO1_6 &= ~0x07;

LPC_IOCON->PIO1_6 |= 0x01; //把P1.6脚设置为RXD

LPC_IOCON->PIO1_7 &= ~0x07;

LPC_IOCON->PIO1_7 |= 0x01; //把P1.7脚设置为TXD

LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟

LPC_SYSCON->UARTCLKDIV = 0x1;//时钟分频值为1

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12);//允许UART时钟

LPC_UART->LCR = 0x83; //8位传输,1个停止位,无几偶校验,允许访问除数锁存器DL_value= SystemCoreClock/16/baudrate; //计算该波特率要求的除数锁存寄存器值LPC_UART->DLM = DL_value/ 256;//写除数锁存器高位值

LPC_UART->DLL = DL_value% 256;//写除数锁存器低位值

LPC_UART->LCR = 0x03; //DLAB置0

LPC_UART->FCR = 0x07; //允许FIFO,清空RxFIFO和TxFIFO

}

谢谢观看

相关文档
最新文档