[STM8] 为什么我的无线模块只能接受到两位或者以为数据呢,我想发的是8位数据

[复制链接]
 楼主| 发表于 2017-4-27 16:19 | 显示全部楼层 |阅读模式
unsigned char num=1;
void Uart_Run(void)   
{       
        if(con0!=con1)
        {
                UART3_SendData8(TXDATA1[con0]);
                con0++;con1++;
        }
        if(con1>TxDataMax0)
        {
                con0=0;con1=1;
        }
        else
        {
                  RxCon1++;

        }       
}



        while(1)
        {
                if(num!=RxCon1)
                {
                          num=RxCon1;
                        Uart_Run();
                }               
        }


RxCon1是中断发生接到8为数据之后自加,求大神指导

发表于 2017-4-27 20:22 | 显示全部楼层
你这程序发的好像是单字节;
 楼主| 发表于 2017-4-28 13:14 | 显示全部楼层
mmuuss586 发表于 2017-4-27 20:22
你这程序发的好像是单字节;

一次只能发送一个字节啊 ,有循环的,发送字节后判断num!=RxCon1;然后还要进入发送知道con0>TxDataMax0;的时候,再让num=RxCon1;检测的时候没问题 ,但是就是发送不了
发表于 2017-4-28 13:25 | 显示全部楼层
发送有没判断标志位看数据是否已经发出去了
 楼主| 发表于 2017-5-3 11:49 | 显示全部楼层
已经解决了,库函数了没有等待发送完成延迟的函数,所以才会在前一个字节没有发送完成的时候发送下一个字节,所以只能接收到一位
发表于 2017-5-3 16:52 | 显示全部楼层
你的数据判断有点问题了。
发表于 2017-5-3 16:53 | 显示全部楼层
楼主接收的数据不对吗?
发表于 2017-5-3 16:54 | 显示全部楼层
楼主这不是只有发送的数据吗?
发表于 2017-5-3 16:55 | 显示全部楼层
发送的时候只要判断发送字节数据,楼主两个变量有点混乱了。
发表于 2017-5-3 16:56 | 显示全部楼层
TxDataMax0是怎么定义的
发表于 2017-5-3 16:58 | 显示全部楼层
               if(num!=RxCon1)
                {
                          num=RxCon1;
                        Uart_Run();
                }     这个判断肯定存在问题。
发表于 2017-5-3 16:58 | 显示全部楼层
是固定接收到两位数据吗?
发表于 2017-5-3 16:58 | 显示全部楼层
接收函数哪里执行的
发表于 2017-5-3 16:58 | 显示全部楼层
这个需要看程序接收,可以在中断里面执行。
发表于 2017-5-3 16:59 | 显示全部楼层
不是应该使用for循环发送数据吗?
 楼主| 发表于 2017-5-3 17:02 | 显示全部楼层
这个问题主要是库函数中没有发送完成的标志,就是一个字节没有发送完成的时候,另一个字节就要发送了,所以只是发送成功了最后以为,在库函数中加上一个发送标志位就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

0

粉丝
快速回复 返回顶部 返回列表