[国产单片机] spi 分时复用做UART

[复制链接]
846|3
 楼主| WUZHIXIONG23 发表于 2019-10-15 19:41 | 显示全部楼层 |阅读模式
ht66fu50串口接收后会一直发送
        if(_xpf)
                        {
                               
                                _xpf=0;
                                _mf2f=0;
                                Register.usr = UARTBridgeSPI(ReadUSR,0);
                                if(Register.Flag.rxif==1&Register.Flag.ridle==1)
                                {
                                        ReceData[n] = UARTBridgeSPI(ReadFIFO,0x01);       
                                        _delay(100);
                                        n++;
                                }
       
                                if(Register.Flag.txif==1)
                                {
                                       
                                         UARTBridgeSPI(WriteFIFO,ReceData[0]);
                                         _delay(100);
                                         j++;       
                                }
                                if(j>19)
                                 {j=0x00;n=0;_nop();}//}break}
                                _xpf=0;
                                _mf2f=0;
                        }

评论

我觉得官网上的代码有问题  发表于 2019-10-15 20:22
 楼主| WUZHIXIONG23 发表于 2019-10-15 20:22 | 显示全部楼层
/*-----------------------------------
Function: UART receive and tx       
Input:                
Output:                 
Note:               
-----------------------------------*/
void UARTAccess(void)
{
                uint8 ReceData[20];
                        uint8 n=0;
                        uint8 j=0;
                        if(_xpf)
                        {
                               
                                _xpf=0;
                                _mf2f=0;
                                Register.usr = UARTBridgeSPI(ReadUSR,0);
                                if(Register.Flag.rxif==1&Register.Flag.ridle==1)
                                {
                                        ReceData[n] = UARTBridgeSPI(ReadFIFO,0x01);       
                                        _delay(100);
                                        n++;
                                }
       
                                if(Register.Flag.txif==1)
                                {
                                       
                                         UARTBridgeSPI(WriteFIFO,ReceData[j]);
                                         _delay(100);
                                         j++;       
                                }
                                if(j>19)
                                 {j=0x00;n=0;_nop();}//}break}
                                _xpf=0;
                                _mf2f=0;
                        }
}

评论

这样不是n,和j永远是0?  发表于 2019-10-15 20:23
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

233

帖子

2

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