打印
[STM32F1]

STM32 串口接数据问题

[复制链接]
1116|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lin13a321|  楼主 | 2015-12-20 00:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求指点:
if(USART_GetITStatus(USART2, USART_IT_RXNE ) != RESET)
   {
                REC_DATA_STR[i++] = USART_ReceiveData(USART2);
    }

      
}   

这样接收数据对不对?为什么每次都只能接收两个字节,并且永远都是这两个字节,每次发送什么 都只有前两个字节,重启以后又会接收两个字节,但是DR寄存器貌似又没刷新,永远都是这两个字节!!!

求指点,这个接收函数到底该怎么处理
沙发
JY-DX-JY| | 2015-12-20 10:34 | 只看该作者
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {        
            code=USART_ReceiveData(USART1);
                  printf("%c",code);    //将接受到的数据直接返回打印
        }
         感觉程序没问题

使用特权

评论回复
板凳
lin13a321|  楼主 | 2015-12-20 11:05 | 只看该作者
JY-DX-JY 发表于 2015-12-20 10:34 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { code=USART_ReceiveData(USART1);

但是为什么,我每次在主函数中发送REC_DATA_STR[]这个数组的时候,只有前两个字节是对的,其他都是0。我是串口接受到什么就发送什么出来。并且如果我定义stm32f103端口B;的时候,串口就不工作,串口是D口啊,毫不相干!

使用特权

评论回复
地板
JY-DX-JY| | 2015-12-20 11:06 | 只看该作者
是不是没初始化对呀

使用特权

评论回复
5
lin13a321|  楼主 | 2015-12-20 11:08 | 只看该作者
JY-DX-JY 发表于 2015-12-20 10:34 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { code=USART_ReceiveData(USART1);

我是在主函数所在C文件中定义的uint8 REC_DATA_STR[]这个数组,然后在中断函数所在的C文件中声明的 exten uint8 REC_DATA_STR[],这应该没问题吧

使用特权

评论回复
6
lin13a321|  楼主 | 2015-12-20 11:12 | 只看该作者
JY-DX-JY 发表于 2015-12-20 11:06 是不是没初始化对呀

应该没有吧,但是不知道为什么初始化B口,会影响D口复用的串口

使用特权

评论回复
7
JY-DX-JY| | 2015-12-20 11:17 | 只看该作者
lin13a321 发表于 2015-12-20 11:08
我是在主函数所在C文件中定义的uint8 REC_DATA_STR[]这个数组,然后在中断函数所在的C文件中声明的 exten ...

没问题

使用特权

评论回复
8
lin13a321|  楼主 | 2015-12-20 11:37 | 只看该作者
JY-DX-JY 发表于 2015-12-20 11:17 没问题

但是不知道为什么老是接收不对,并且还不能初始化B口

使用特权

评论回复
9
JY-DX-JY| | 2015-12-20 11:48 | 只看该作者
你用的那个片子?原理图?初始化程序?

使用特权

评论回复
10
lin13a321|  楼主 | 2015-12-20 12:04 | 只看该作者
JY-DX-JY 发表于 2015-12-20 11:48 你用的那个片子?原理图?初始化程序?

Stm32f103,上不了网

使用特权

评论回复
11
JY-DX-JY| | 2015-12-20 12:27 | 只看该作者
那就没办法了

使用特权

评论回复
12
lin13a321|  楼主 | 2015-12-20 12:32 | 只看该作者
JY-DX-JY 发表于 2015-12-20 12:27 那就没办法了

我那个接收数组REC_DATA_STR,我在开始定义int i=0,如果我发10字节oxff,能全部存在数组里面吧,也就是一次接收10个字节,然后在主函数中发送!!

使用特权

评论回复
13
JY-DX-JY| | 2015-12-20 12:45 | 只看该作者
是啊。结果怎么样?

使用特权

评论回复
14
lin13a321|  楼主 | 2015-12-20 12:52 | 只看该作者
JY-DX-JY 发表于 2015-12-20 12:45 是啊。结果怎么样?

结婚就是发出来只有两个字节,并且不能刷新,回传永远都是开始两字节,后面在下发东西,回传不改变!!并且还不能初始化B口,要不然串口就没有回传

使用特权

评论回复
15
JY-DX-JY| | 2015-12-20 12:55 | 只看该作者
你主程序发送的程序是怎样的?

使用特权

评论回复
16
lin13a321|  楼主 | 2015-12-20 13:05 | 只看该作者
初始化时钟
初始化端口
初始化串口
然后就是发送函数了

使用特权

评论回复
17
lin13a321|  楼主 | 2015-12-20 13:06 | 只看该作者
不能上网能不能加个qq,我截图给你看,谢谢

使用特权

评论回复
18
JY-DX-JY| | 2015-12-20 14:18 | 只看该作者
413132614

使用特权

评论回复
19
加油吧小鱼儿| | 2015-12-20 22:13 | 只看该作者
中断接收呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

85

帖子

1

粉丝