[STM8] 求助:UART_RX_NUM是寄存器吗?

[复制链接]
2567|6
 楼主| AAA1314 发表于 2014-3-18 17:38 | 显示全部楼层 |阅读模式
本帖最后由 AAA1314 于 2014-3-19 11:47 编辑

这是风驰STM8开发板的例程中的一段程序,有点看不懂。为什么用UART_RX_NUM来判断是否接受完成?if(( UART_RX_NUM&0x80)==0)/*接收未完成*/ 在这句程序之前没有能改变他的值啊
#pragma vector=0x14
__interrupt void UART1_RX_IRQHandler(void)
{
   u8 Res;
    if(UART1_GetITStatus(UART1_IT_RXNE )!= RESET)  
    {/*接收中断(接收到的数据必须是0x0d 0x0a结尾)*/
        Res =UART1_ReceiveData8();
        /*(USART1->DR);读取接收到的数据,当读完数据后自动取消RXNE的中断标志位*/
        if(( UART_RX_NUM&0x80)==0)/*接收未完成*/
        {
            if( UART_RX_NUM&0x40)/*接收到了0x0d*/
                {
                  if(Res!=0x0a) UART_RX_NUM=0;/*接收错误,重新开始*/
                  else  UART_RX_NUM|=0x80;        /*接收完成了 */
                }
            else /*还没收到0X0D*/
              {        
                if(Res==0x0d) UART_RX_NUM|=0x40;
                else
                  {
                    RxBuffer[ UART_RX_NUM&0X3F]=Res ;
                     UART_RX_NUM++;
                      if( UART_RX_NUM>63) UART_RX_NUM=0;/*接收数据错误,重新开始接收*/  
                  }                 
          }
        }                  
                }
  
  
}
sting_yang 发表于 2014-3-18 19:36 | 显示全部楼层
不是,那是自己定义的
 楼主| AAA1314 发表于 2014-3-19 08:43 | 显示全部楼层
sting_yang 发表于 2014-3-18 19:36
不是,那是自己定义的

那为什么用他来判断是否接受完成?if(( UART_RX_NUM&0x80)==0)/*接收未完成*/ 在这句程序之前没有能改变他的值啊
sting_yang 发表于 2014-3-19 16:25 | 显示全部楼层
AAA1314 发表于 2014-3-19 08:43
那为什么用他来判断是否接受完成?if(( UART_RX_NUM&0x80)==0)/*接收未完成*/ 在这句程序之前没有能改变 ...

值是在后面改变的

评分

参与人数 1威望 +1 收起 理由
AAA1314 + 1 很给力!

查看全部评分

 楼主| AAA1314 发表于 2014-3-20 10:29 | 显示全部楼层
sting_yang 发表于 2014-3-19 16:25
值是在后面改变的

还是不太懂这个程序,我再仔细看看吧,不过还是要谢谢你:handshake 以后有问题再请教
sting_yang 发表于 2014-3-20 15:47 | 显示全部楼层
UART_RX_NUM|=0x80;
UART_RX_NUM|=0x40;
  UART_RX_NUM++; ..................这时候改变的
 楼主| AAA1314 发表于 2014-3-21 11:50 | 显示全部楼层
sting_yang 发表于 2014-3-20 15:47
UART_RX_NUM|=0x80;
UART_RX_NUM|=0x40;
  UART_RX_NUM++; ..................这时候改变的

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

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