[STM32F1] 这样接收数据对不对?

[复制链接]
 楼主| ousj 发表于 2019-12-15 14:01 | 显示全部楼层 |阅读模式
求指点:
if(USART_GetITStatus(USART2, USART_IT_RXNE ) != RESET)
   {
                REC_DATA_STR[i++] = USART_ReceiveData(USART2);
    }

      
}   

这样接收数据对不对?
liuzaiy 发表于 2019-12-15 14:05 | 显示全部楼层
什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| ousj 发表于 2019-12-15 14:07 | 显示全部楼层
为什么每次都只能接收两个字节,并且永远都是这两个字节,每次发送什么 都只有前两个字节,重启以后又会接收两个字节,但是DR寄存器貌似又没刷新,永远都是这两个字节!!!
zyf部长 发表于 2019-12-15 14:10 | 显示全部楼层

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {         
            code=USART_ReceiveData(USART1);
                  printf("%c",code);    //将接受到的数据直接返回打印
        }
         感觉程序没问题
 楼主| ousj 发表于 2019-12-15 14:14 | 显示全部楼层
但是为什么,我每次在主函数中发送REC_DATA_STR[]这个数组的时候,只有前两个字节是对的,其他都是0。我是串口接受到什么就发送什么出来。并且如果我定义stm32f103端口B;的时候,串口就不工作,串口是D口啊,毫不相干!
chuxh 发表于 2019-12-15 14:17 | 显示全部楼层
是不是没初始化对呀
 楼主| ousj 发表于 2019-12-15 14:19 | 显示全部楼层
我是在主函数所在C文件中定义的uint8 REC_DATA_STR[]这个数组,然后在中断函数所在的C文件中声明的 exten uint8 REC_DATA_STR[],这应该没问题吧
 楼主| ousj 发表于 2019-12-15 14:22 | 显示全部楼层
应该没有吧,但是不知道为什么初始化B口,会影响D口复用的串口
dingy 发表于 2019-12-15 14:25 | 显示全部楼层
没问题
 楼主| ousj 发表于 2019-12-15 14:29 | 显示全部楼层
但是不知道为什么老是接收不对,并且还不能初始化B口
xxrs 发表于 2019-12-15 14:35 | 显示全部楼层
你用的那个片子?原理图?初始化程序?
 楼主| ousj 发表于 2019-12-15 14:39 | 显示全部楼层

Stm32f103,上不了网
pangb 发表于 2019-12-15 14:42 | 显示全部楼层
那就没办法了
 楼主| ousj 发表于 2019-12-15 14:44 | 显示全部楼层
我那个接收数组REC_DATA_STR,我在开始定义int i=0,如果我发10字节oxff,能全部存在数组里面吧,也就是一次接收10个字节,然后在主函数中发送!!
 楼主| ousj 发表于 2019-12-15 14:47 | 显示全部楼层
是啊。结果怎么样?
 楼主| ousj 发表于 2019-12-15 14:49 | 显示全部楼层
结果就是发出来只有两个字节,并且不能刷新,回传永远都是开始两字节,后面在下发东西,回传不改变!!并且还不能初始化B口,要不然串口就没有回传
kangzj 发表于 2019-12-15 14:53 | 显示全部楼层
你主程序发送的程序是怎样的?
 楼主| ousj 发表于 2019-12-15 14:57 | 显示全部楼层
初始化时钟
初始化端口
初始化串口
然后就是发送函数了
 楼主| ousj 发表于 2019-12-15 14:59 | 显示全部楼层

不能上网能不能加个qq,我截图给你看,谢谢
llljh 发表于 2019-12-15 15:02 | 显示全部楼层
中断接收呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

712

主题

7557

帖子

1

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