LPC1768 UART超时中断的使用

与FIFO和接收触发设置配合可以作为类似空闲中断的功能

FCR控制寄存器设置FIFO使能和触发字节数。
在这里插入图片描述

在这里插入图片描述

中断标识寄存器IIR。2a即接收成功中断RDA,2b即字符超时中断CTI。
在这里插入图片描述
当接收FIFO(16字节字节)非空,
1、当总字节达不到FCR设置的数量,则在延时达到超时时间(3.5~4.5个字节接收时间)时触发CTI超时中断。
2、当接收字节每次达到FCR设置的数量,则触发一次RDA接收中断
当最后一组数据不满足设置的触发数量则在超时时间达到后触发超时中断。

基于以上功能即可以设置FCR成8字节触发
因此低于8字节的数据帧,在经过超时时间等待后触发CTI超时中断,作为帧结束标志
超过8字节的数据帧则每8字节触发一次读取中断,可以读取FIFO数据。

以上设置可以减少串口中断发生次数。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LPC1768是一款基于ARM Cortex-M3内核的微控制器,拥有丰富的GPIO资源和中断控制功能。使用LPC1768控制四位数码管可以通过以下步骤实现: 1. 确定数码管接口 LPC1768的GPIO口数量较多,可以选择其中四个口作为数码管的控制口,分别控制数码管的四个数码位。例如,可以将P0.0~P0.3口与数码管的A~D位相连。 2. 配置GPIO口 使用LPC1768的GPIO口需要先将其配置为输出模式。可以使用LPC1768的GPIO库函数来进行配置,例如: LPC_GPIO0->FIODIR |= (1<<0)|(1<<1)|(1<<2)|(1<<3); //将P0.0~P0.3口设置为输出模式 3. 中断控制 为了控制数码管的显示,需要定时更新数码管的显示数据。可以使用LPC1768的定时器中断来实现定时更新,例如: //初始化定时器1 LPC_TIM1->PR = 0; //设置预分频系数为1 LPC_TIM1->MR0 = 100000; //设置计数器最大值为100000 LPC_TIM1->MCR = (1<<0)|(1<<1); //设置计数器为重载模式,并清除计数器 LPC_TIM1->TCR = (1<<1); //复位定时器计数器 LPC_TIM1->TCR &= ~(1<<1); //停止计数器 //配置中断 NVIC_EnableIRQ(TIMER1_IRQn); //使能定时器1中断 //定时器1中断处理函数 void TIMER1_IRQHandler(void) { //更新数码管显示数据 ... //清除中断标志位 LPC_TIM1->IR |= (1<<0); } 4. 数码管显示数据更新 在定时器中断处理函数中,需要更新数码管的显示数据。可以使用LPC1768的GPIO库函数来控制GPIO口输出高低电平,从而控制数码管的亮灭。例如: //更新数码管显示数据函数 void update_display(void) { static uint8_t digit = 0; //当前显示的数码位 static uint8_t data[4] = {0}; //数码管显示数据 //更新数码管显示数据 data[0] = ...; data[1] = ...; data[2] = ...; data[3] = ...; //控制数码管显示 LPC_GPIO0->FIOCLR = (1<<0)|(1<<1)|(1<<2)|(1<<3); //清除所有数码位的输出 LPC_GPIO0->FIOSET = (1<<digit); //设置当前数码位的输出 LPC_GPIO1->FIOPIN = (data[digit]<<16); //设置当前数码位的输出数据 //更新数码位 digit++; if(digit >= 4) { digit = 0; } } 5. 完整代码 下面是一个简单的LPC1768控制四位数码管的示例代码:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值