UART4 Tx为低电平. 数据无法发送..请教

发布: 2010-1-29 08:54 | 作者: jy01293773 | 来源: StmFans思蜕盟 OPELC 自由电子联盟

首先硬件是OK的..

程序在上电后初始化UART4. Tx+Rx均使能. 最开始通讯是正常的.

当改动代码中很小的一部分程序. 重新编译后. Tx脚就成了低电平. 数据也发送不出去. 但Rx正常. 可以受到外面发送的数据.

程序的改动跟串口完全没有关系.改动后的代码也没有运行(必须进入某个对话框才会执行). 因此怀疑是原来系统中就隐藏着某个BUG. 在map编译链接改变后. 就导致了UART4不能发送.

哪位大侠可以告诉我,什么条件可以使得Tx一直为低?找到相关原因才能有线索去找那个隐藏的问题..
我通过IAR的调试插件观察寄存器.
发现异常时UART4的SR、CR与能正常工作的版本是一样的. TE RE UE 等几个重要bit都是1.  不知道是不是寄存器被篡改了. 但插件看不出来的缘故?.
jy01293773 (2010-1-29 10:54:27)
又查看了一下. 异常时RCC的GPIO与UART4都是使能的. GPIO的配置寄存器也没有问题 AF_PP 50MHz

刚刚又重新写了一个函数. 光用于重新初始化UART4.  在进入某个菜单后调用此函数. 发现TX还是没有反应.

这个函数在另外一个工程里. USART_Cmd(ENABEL)后. Tx就为高了. 没有任何问题

到底是什么情况啊...晕
binglin (2010-1-29 16:57:38)
请多次检查你改动代码中很小的一部分程序,一般这种情况是由于代码有错误,把UART4的TX给关了。
binglin (2010-1-29 16:58:43)
要不楼主你把修改的这部份代码发上来让大家也一起检查一下,还有你的UART4的初始化代码,RCC中与UART4有关的代码也一并发上来大家看看。