维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
 
IC供应
IC求购
非IC供应
非IC求购
电子资讯
技术资料
商人论坛
 
技术文章 PDF资料 IC价格 引脚说明 电路图 IC替换 IC厂商 电子辞典
作者 主题 内容
采购元器件好去处--维库电子市场网推荐
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

请ZLG的工程师或各位高手帮忙

来源:21ic 作者:gg_5188 栏目:ARM技术
请ZLG的工程师或各位高手帮忙
我用LPC2119的串口0接收10字节数据(查询方式),然后再返回上位机;用定时器1来判断超时。上位发10字节时,返回正常;如果上位机发9字节时,超时就出现了问题,我的程序如下,请高手指点:
uint8  UART0_RecvByte(uint8 data)
{  
   int i;
   
   Flag.t_over = 0;
   T1TCR = 0x01;                          // 启动订时器T1    
   while ( (Flag.t_over&0x01) != 0x01)    // 判断是否超时
      {
         if ( (U0LSR&1) == 1)              // 判断是否收到数据
            {
               data = U0RBR;
               i = U0IIR;
               break;
            }
                        
            else
                continue;
            
      }
   T1TCR = 0x02;                          // 停止并复位定时器T1
   return (data);
}
这是一个接收一字节子函数,我在主程序中用for循环调用,Flag.t_over是我在定时器中设的标志(结构体);我在单片机中设定接收10字节数据,但上位机发9字节时,就会在while ( (Flag.t_over&0x01) != 0x01)    
      {
         if ( (U0LSR&1) == 1)之间死循环,我在定时器中设了断点,也在变量中也看到Flag.t_over=1了,但还是死循环,请各位帮助分析一下!

1楼: >>参与讨论
zlgARM
定义Flag.t_over时,使用volatile修饰。
 
2楼: >>参与讨论
gg_5188
多谢!但能说明原因吗?
 
3楼: >>参与讨论
gg_5188
我知道原因了,多谢指点!
 

参与讨论
昵称:
讨论内容:
 
 
相关帖子
求助:请问我自己做的2104的板子有问题
请教关于外部中断边沿触发的问题
IODIR自己怎么变了?
自己做的2104的板子,p0.14_p44不管是否接地都可下载flash
求教一个中断优先级的问题


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号