[求助] 我的芯片是不是坏了

大家都是好朋友   2017-1-16 20:31 楼主
为什么我发送数据 USART DR寄存器一直为零 DEBUG看的

回复评论 (8)

你Debug看到的并不是发送数据用DR,DR看似一个,其实有两个,你发送用的那个DR是只写的,没办法读取,而你读取的DR,是接收数据用的寄存器,如果你没有接收数据,那么它就是0.
点赞  2017-1-16 20:53
引用: lcofjp 发表于 2017-1-16 20:53
你Debug看到的并不是发送数据用DR,DR看似一个,其实有两个,你发送用的那个DR是只写的,没办法读取,而你 ...

哦 明白了 ,我还想问个串口问题 我本想发两个数给上位机,开始我已经CLEAR TC
然后
for(t=4;t<6;t++)
                {
                                //while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                            
                                USART_SendData(USART1, BUF[t]);         //向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结                       
                        }  可我只收到一个数
我在FOR前面改,加多个发送,还是只有一个数
我又在FOR前面改,加了句
USART_SendData(USART1, 'b');   
                        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
这样又收到了3个数,我很晕。。。

点赞  2017-1-16 21:32
引用: 大家都是好朋友 发表于 2017-1-16 21:32
哦 明白了 ,我还想问个串口问题 我本想发两个数给上位机,开始我已经CLEAR TC
然后
for(t=4;t

我建议你还是按常规套路来,判断TXNE标志比较好。改完之后再调
点赞  2017-1-16 21:37
QQ截图20170116213921.png 而且我初始化了USART  TC还是在置位
那个TXE是发送完成中断是吧。我是看教程才这么写的
点赞  2017-1-16 21:41
那个是正常的,发送出去的数据是读DR是读不出来的
点赞  2017-1-16 23:05
引用: 大家都是好朋友 发表于 2017-1-16 21:41
而且我初始化了USART  TC还是在置位
那个TXE是发送完成中断是吧。我是看教程才这么写的

我建议你别看教程了,看看官网的Reference Manual的相关章节吧,哪个位在什么情况下置位或者复位,里面描述的很详细
点赞  2017-1-17 01:52
引用: lcofjp 发表于 2017-1-17 01:52
我建议你别看教程了,看看官网的Reference Manual的相关章节吧,哪个位在什么情况下置位或者复位,里面描 ...

额。。
点赞  2017-1-17 10:04
引用: huo_hu 发表于 2017-1-16 23:05
那个是正常的,发送出去的数据是读DR是读不出来的

额 。。我知道了
点赞  2017-1-17 10:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复