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. 不知道是不是寄存器被篡改了. 但插件看不出来的缘故?.
程序在上电后初始化UART4. Tx+Rx均使能. 最开始通讯是正常的.
当改动代码中很小的一部分程序. 重新编译后. Tx脚就成了低电平. 数据也发送不出去. 但Rx正常. 可以受到外面发送的数据.
程序的改动跟串口完全没有关系.改动后的代码也没有运行(必须进入某个对话框才会执行). 因此怀疑是原来系统中就隐藏着某个BUG. 在map编译链接改变后. 就导致了UART4不能发送.
哪位大侠可以告诉我,什么条件可以使得Tx一直为低?找到相关原因才能有线索去找那个隐藏的问题..
我通过IAR的调试插件观察寄存器.
发现异常时UART4的SR、CR与能正常工作的版本是一样的. TE RE UE 等几个重要bit都是1. 不知道是不是寄存器被篡改了. 但插件看不出来的缘故?.

刚刚又重新写了一个函数. 光用于重新初始化UART4. 在进入某个菜单后调用此函数. 发现TX还是没有反应.
这个函数在另外一个工程里. USART_Cmd(ENABEL)后. Tx就为高了. 没有任何问题
到底是什么情况啊...晕