在Keil MDK 4.74上编写一段程序: (1)初始化LPC1114微控制器UART串行口,设置波特率为115200,数据位:8,停止位:1;校验位:奇校验;中断使能,发送使能,等待接收数据;
时间: 2024-10-16 15:06:25 浏览: 131
52单片机定时器2作为串行口波特率发生器使用(C语言程序)
在Keil MDK 4.74环境下,你可以使用以下代码段来初始化LPC1114微控制器的UART串口,配置波特率、数据位、停止位以及校验位。假设你已经在头文件中包含了相关的函数声明,并且已经将硬件寄存器映射到对应的变量。
```c
#include "lpc111x.h" // 包含LPC1114的头文件
void initialize_UART(void) {
// 初始化串口
LPC_USART0->LCR = (1 << FCR.bits.BRGH) | 0x03; // 设置波特率,115200 波特率下 BRGH=1 和 divisor=16
LPC_USART0->DLM = 0; // 数据位位数,8位
LPC_USART0->DLL = 0;
LPC_USART0->FDR = 0; // 停止位,1位
LPC_USART0->LCR |= (1 << PFLSH); // 开启填充字符(清除发送队列)
// 配置奇校验
LPC_USART0->LCR &= ~(1 << PAR); // 清除奇偶校验位选择,奇校验
LPC_USART0->LCR |= (1 << SPEN); // 发送使能
// 中断使能
LPC_USART0->IER = (1 << TIIE) | (1 << RIIE); // 接收中断使能和发送中断使能
NVIC_EnableIRQ(UART0_IRQn); // 启动UART0中断处理
}
// 当需要接收数据时调用这个函数
void wait_for_data(void) {
while (!(LPC_USART0->LSR & (1 << RIF))) { // 等待接收标志RI变为1
__WFI(); // 如果有空闲CPU周期,进入低功耗模式
}
}
```
注意:
1. 这里假设`LPC_USART0`是UART0模块的别名,实际项目中请替换为你工程中的正确名称。
2. `NVIC_EnableIRQ()`用于开启中断服务请求,确保已正确注册并启用相应的中断向量。
3. 请确保你已经正确地设置了定时器和波特率发生器以达到115200bps的速率。
阅读全文