|
| 采购元器件好去处--维库电子市场网推荐 |
| 技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | 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 于 2004-12-13 19:50:00 发布:
定义Flag.t_over时,使用volatile修饰。 |
|
| 2楼: | >>参与讨论 |
| 作者: gg_5188 于 2004-12-14 8:45:00 发布:
多谢!但能说明原因吗? |
|
| 3楼: | >>参与讨论 |
| 作者: gg_5188 于 2004-12-14 9:56:00 发布:
我知道原因了,多谢指点! |
|
|
|
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |