[求助] USART的一些问题

armcu   2014-8-6 10:48 楼主
现在我遇到一种情况:初始化USART后马上发数据,发送完成后关掉串口,发送的数据大概10个字节,波特率为1200.平均2s执行一次以上操作,主机接收不到数据;
改成USART一直开启,同样是2s发送一次同样的数据就没有问题。

有人知道是什么原因吗?

回复评论 (10)

一次数据都收不到还是可以收到一些?理论是没有问题的,你再查一查程序吧
点赞  2014-8-6 10:53
引用: bobde163 发表于 2014-8-6 10:53
一次数据都收不到还是可以收到一些?理论是没有问题的,你再查一查程序吧

一次都收不到
点赞  2014-8-6 11:04
这个应该是程序问题,你关闭usart是通过什么方式关闭的,是切断时钟源还是使用了usart复位?
点赞  2014-8-6 11:08
引用: bobde163 发表于 2014-8-6 11:08
这个应该是程序问题,你关闭usart是通过什么方式关闭的,是切断时钟源还是使用了usart复位?

复位
点赞  2014-8-6 11:09
如果你采用的是复位的话,很有可能在重新打开串口的时候串口的参数已经复位了如果你不重新初始化串口,就会收不到数据,你看一下手册里的这段说明:
捕获.JPG
你在调试模式下看一下在复位之后寄存器的值是不是变了
点赞  2014-8-6 11:24
引用: bobde163 发表于 2014-8-6 11:24
如果你采用的是复位的话,很有可能在重新打开串口的时候串口的参数已经复位了如果你不重新初始化串口,就会 ...

我每次发送数据前都重新初始化过了啊
点赞  2014-8-6 11:28
引用: armcu 发表于 2014-8-6 11:28
我每次发送数据前都重新初始化过了啊

那这个问题需要再仔细检查了,能进行在线调试的话,调试一下看看在哪个环节出了问题
点赞  2014-8-6 11:38
引用: bobde163 发表于 2014-8-6 11:38
那这个问题需要再仔细检查了,能进行在线调试的话,调试一下看看在哪个环节出了问题

恩,我跟一下看看
点赞  2014-8-6 11:48
显然,楼主的程序有错。注意,关闭串口必须等串口发送标志建立以后才可以。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2014-8-6 17:56
引用: chunyang 发表于 2014-8-6 17:56
显然,楼主的程序有错。注意,关闭串口必须等串口发送标志建立以后才可以。

不是这个原因,USART在关掉发送机后,发送移位寄存器里面的数据依然会继续发送完。出现这个问题的原因是,我在关闭串口的同时吧相关的IO口也设置成普通IO口了,导致数据发送不出去。
点赞  2014-8-6 18:01
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复