打印
[国产单片机]

spi 分时复用做UART

[复制链接]
711|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;
                        }

使用特权

评论回复
评论
WUZHIXIONG23 2019-10-15 20:22 回复TA
我觉得官网上的代码有问题 

相关帖子

沙发
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;
                        }
}

使用特权

评论回复
评论
WUZHIXIONG23 2019-10-15 20:23 回复TA
这样不是n,和j永远是0? 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

233

帖子

2

粉丝