[STM32F1] STM32 串口接数据问题

[复制链接]
1448|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 | 显示全部楼层
是不是没初始化对呀
 楼主| 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[],这应该没问题吧
 楼主| lin13a321 发表于 2015-12-20 11:12 来自手机 | 显示全部楼层
JY-DX-JY 发表于 2015-12-20 11:06 是不是没初始化对呀

应该没有吧,但是不知道为什么初始化B口,会影响D口复用的串口
JY-DX-JY 发表于 2015-12-20 11:17 | 显示全部楼层
lin13a321 发表于 2015-12-20 11:08
我是在主函数所在C文件中定义的uint8 REC_DATA_STR[]这个数组,然后在中断函数所在的C文件中声明的 exten ...

没问题
 楼主| lin13a321 发表于 2015-12-20 11:37 来自手机 | 显示全部楼层
JY-DX-JY 发表于 2015-12-20 11:17 没问题

但是不知道为什么老是接收不对,并且还不能初始化B口
JY-DX-JY 发表于 2015-12-20 11:48 | 显示全部楼层
你用的那个片子?原理图?初始化程序?
 楼主| lin13a321 发表于 2015-12-20 12:04 来自手机 | 显示全部楼层
JY-DX-JY 发表于 2015-12-20 11:48 你用的那个片子?原理图?初始化程序?

Stm32f103,上不了网
JY-DX-JY 发表于 2015-12-20 12:27 | 显示全部楼层
那就没办法了
 楼主| lin13a321 发表于 2015-12-20 12:32 来自手机 | 显示全部楼层
JY-DX-JY 发表于 2015-12-20 12:27 那就没办法了

我那个接收数组REC_DATA_STR,我在开始定义int i=0,如果我发10字节oxff,能全部存在数组里面吧,也就是一次接收10个字节,然后在主函数中发送!!
JY-DX-JY 发表于 2015-12-20 12:45 | 显示全部楼层
是啊。结果怎么样?
 楼主| lin13a321 发表于 2015-12-20 12:52 来自手机 | 显示全部楼层
JY-DX-JY 发表于 2015-12-20 12:45 是啊。结果怎么样?

结婚就是发出来只有两个字节,并且不能刷新,回传永远都是开始两字节,后面在下发东西,回传不改变!!并且还不能初始化B口,要不然串口就没有回传
JY-DX-JY 发表于 2015-12-20 12:55 | 显示全部楼层
你主程序发送的程序是怎样的?
 楼主| lin13a321 发表于 2015-12-20 13:05 来自手机 | 显示全部楼层
初始化时钟
初始化端口
初始化串口
然后就是发送函数了
 楼主| lin13a321 发表于 2015-12-20 13:06 来自手机 | 显示全部楼层
不能上网能不能加个qq,我截图给你看,谢谢
JY-DX-JY 发表于 2015-12-20 14:18 | 显示全部楼层
413132614
加油吧小鱼儿 发表于 2015-12-20 22:13 | 显示全部楼层
中断接收呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

85

帖子

1

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