[ZLG-ARM] 请教zlgARM:RTC实验2的一个小问题——代码重复!

[复制链接]
2337|4
 楼主| liutongen 发表于 2007-6-2 20:52 | 显示全部楼层 |阅读模式
请问:/****************************************************************************<br />*&nbsp;名称:main()<br />*&nbsp;功能:读取实时时钟的值,并从串口发送出去。&nbsp;&nbsp;<br />****************************************************************************/<br />int&nbsp;&nbsp;main(void)<br />{&nbsp;&nbsp;UARTMODE&nbsp;&nbsp;uart0_set;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000005;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置I/O连接到UART0<br />&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;uart0_set.datab&nbsp;=&nbsp;8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;8位数据位<br />&nbsp;&nbsp;&nbsp;uart0_set.stopb&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1位停止位<br />&nbsp;&nbsp;&nbsp;uart0_set.parity&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;无奇偶校验<br />&nbsp;&nbsp;&nbsp;UART0_Ini(115200,&nbsp;uart0_set);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;初始化串口模式<br />&nbsp;&nbsp;&nbsp;U0FCR&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能FIFO<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;RTCIni();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;初始化RTC<br />&nbsp;&nbsp;&nbsp;while(1)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;while(&nbsp;0==(ILR&0x01)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待RTC增量中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendTimeRtc();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取时钟值,并向UART0发送<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;0==(ILR&0x01)&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendTimeRtc();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;return(0);<br />}<br />该程序段中为何有一个重复的代码段!如下:<br />while(1)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;while(&nbsp;0==(ILR&0x01)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待RTC增量中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendTimeRtc();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取时钟值,并向UART0发送<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;0==(ILR&0x01)&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendTimeRtc();<br />&nbsp;&nbsp;&nbsp;}<br />请多多指教!谢谢!
 楼主| liutongen 发表于 2007-6-2 20:54 | 显示全部楼层

请教

去掉一个重复代码段,仍能正常执行,不知是何原因!
liuyu305 发表于 2007-6-2 22:46 | 显示全部楼层

我认为,那个重复的就相当与循环一次,所以,,,

  
mr.king 发表于 2007-6-3 10:41 | 显示全部楼层

也许NXP的RTC有BUG,需要连读两次才能得到正确结果

  
 楼主| liutongen 发表于 2007-6-3 10:52 | 显示全部楼层

回复4楼

去掉一个重复代码段,仍能正常执行&nbsp;!<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

20

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0