cortex mo lpc1114 uart串口中断收发数据

电子元件 4年前 (2022) aysz01
0

中断方式串口接收数据

新建一个工程,结构如下图所示:

在main.c文件中,输入以下代码:

#include “lpc11xx.h”

#include “uart.h”

uint8_t rec_buf;

void UART_IRQHandler(void)

{

uint32_t IRQ_ID; // 定义读取中断ID号变量

uint8_t rec_buf; // 定义接收数据变量数组

IRQ_ID = LPC_UART->IIR; // 读中断ID号

IRQ_ID =((IRQ_ID>>1)&0x7);// 检测bit3:bit1

if(IRQ_ID == 0x02 ) // 检测是不是接收数据引起的中断

{

rec_buf = LPC_UART->RBR;

UART_send_byte(rec_buf); // 把接收到的字节发回串口

}

}

int main()

{

UART_init(115200); // 把串口波特率配置为9600

LPC_UART->IER = 0x01; // 开启接收中断

NVIC_EnableIRQ(UART_IRQn); // 开串口中断

while(1)

{

;

}

}

与上一节相比,在main函数中,增加了第19、20行,负责开启串口接收中断。

第19行,给中断允许寄存器IER bit0写1,开启接收中断。

第4~15行是中断服务函数。

第8行,读取中断识别寄存器IIR的值。

第9行,获取IIR寄存器bit1~bit3的值,先右移一位,再把bit4以上的值清0,得到bit1~bit3的值。

第10行,检测是否是接收到数据引起的中断。

打开串口调试助手,波特率调成9600,用串口调试助手给单片机发送数据,单片机将会把接收到的数据发送回串口调试助手。

版权声明:aysz01 发表于 2022-08-06 15:54:32。
转载请注明:cortex mo lpc1114 uart串口中断收发数据 | 鳌游电工

暂无评论

暂无评论...