打印

UART3仿真时正常,运行时不正常,是何原因?

[复制链接]
2580|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z_zt|  楼主 | 2012-5-10 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天遇一神奇的问题,请教各位大侠。
芯片: STM32F103CBT6;
仿真器:ST-LINK,199元的那种;
环境:IAR 5.5
问题:
  我配置UART3,中断接收,查寻发送,测试时,收一字节发一字节,问题是仿真时一切正常,实际运行时,其它指令未见不正常的现象,唯独UART3不工作,反正是我用上位机发下去数据后没任何反应,在仿真时,发什么回什么,不明白这是为什么?
沙发
blowlow| | 2012-5-10 22:37 | 只看该作者
请问你用什么开发环境啊?

使用特权

评论回复
板凳
z_zt|  楼主 | 2012-5-10 22:55 | 只看该作者
环境:IAR 5.5

使用特权

评论回复
地板
z_zt|  楼主 | 2012-5-11 10:32 | 只看该作者
刚才又做了测试,情况是这样的,我在中断里再加一段小程序,就是当收到0x55后,LED灯亮,收到0xAA后,LED灯灭,然后收到什么发什么。
测试结果:
1- 仿真情况下,上位机发送0x55后,灯亮,0xAA后灯灭,上位机发什么,就收到什么,一切OK;
2- 离开ST-LINK后重启,上位机发送0x55后,灯亮,0xAA后灯灭,但不论上位机发什么,都收不到回复;

说明:
1- 我同样的程序在UART2上是没有问题的;
2- 我的发送代码如下:
void put_c3(uint8_t chr)
{
        USART_SendData(USART3, chr);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
}

还请高人指点迷津!

使用特权

评论回复
5
airwill| | 2012-5-12 09:29 | 只看该作者
USART3 和 USART2 的功能完全一致.
会不会硬件上有问题?

使用特权

评论回复
6
st316| | 2012-5-12 23:27 | 只看该作者
是不是在将USART2改成USART3的过程中,初始化USART3时某些语句没有将USART2改成USART3。
仿真时又没问题,奇怪。
我曾遇到过一个问题,也是仿真时可以,一脱机运行就有问题。后面发现是刚上电时其它芯片还未准备好,延时2S再初始化就OK了。提供一个思路,供参考。

使用特权

评论回复
7
jxmzzr| | 2012-5-12 23:47 | 只看该作者
如果仿真没有问题,证明代码应该没啥问题,最大的可能就是串口有问题或是设置问题,再看看吧。

使用特权

评论回复
8
拿起书本| | 2012-5-13 00:00 | 只看该作者
你可以在下位机作个测试,有数据往上位机发个特定的字节。

使用特权

评论回复
9
tianli1980| | 2012-5-13 00:15 | 只看该作者
我以前也遇到过类似的问题,我当时就是串口的问题,你再检查一下吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

47

帖子

2

粉丝