[MCU] STM8S单片机串口3可以进入中断但是数据寄存器无数据!!!急急急

[复制链接]
 楼主| 骑乌龟上课 发表于 2014-11-7 11:45 | 显示全部楼层 |阅读模式
STM8S单片机串口3接收数据,当发送数据过来时可以进入串口3中断,但是数据寄存器中无数据,是怎么回事?请各位大神指教。串口助手可以收到发来的正确数据。
 楼主| 骑乌龟上课 发表于 2014-11-7 11:47 | 显示全部楼层
#ifdef _IAR_SYSTEMS_
#pragma vector=0x17
__interrupt void UART3_RX_IRQHandler(void)
#endif
{
   Recieve_UART3();
   UART3_ClearITPendingBit(UART3_IT_RXNE);
}
 楼主| 骑乌龟上课 发表于 2014-11-7 11:56 | 显示全部楼层
C:\Documents and Settings\Administrator\桌面\123.jpg
 楼主| 骑乌龟上课 发表于 2014-11-7 11:59 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 骑乌龟上课 发表于 2014-11-7 12:01 | 显示全部楼层
串口3 的配置:
void Uart3_Init(void)
{
           UART3_DeInit();                  
           ITC_SetSoftwarePriority(ITC_IRQ_UART3_RX    ,  ITC_PRIORITYLEVEL_2);
       UART3_Init(19200,UART3_WORDLENGTH_8D,UART3_STOPBITS_1,UART3_PARITY_NO ,UART3_MODE_TXRX_ENABLE);               
           UART3_ITConfig(UART3_IT_TXE,DISABLE);
           UART3_ITConfig(UART3_IT_RXNE, ENABLE);
           UART3_Cmd(ENABLE);
}
 楼主| 骑乌龟上课 发表于 2014-11-7 14:33 | 显示全部楼层
再次鉴定之后,发现是波特率不匹配的原因,发送过来的是19200,接收方要用57600才可以正确。那么要怎么样才可以设置成一样的波特率19200呢????大神请赐教!!!
ayb_ice 发表于 2014-11-7 15:50 | 显示全部楼层
这个没有什么大神

仔细看手册吧,
估计是你时钟频率搞错了吧
ayb_ice 发表于 2014-11-7 15:52 | 显示全部楼层
STM8不停的发数据,用示波器看看波特率就知道情况了
 楼主| 骑乌龟上课 发表于 2014-11-10 08:52 | 显示全部楼层
ayb_ice 发表于 2014-11-7 15:52
STM8不停的发数据,用示波器看看波特率就知道情况了

我就是stm8s不停的发数据,用串口助手接收时,要用不同的波特率接收真可以正确的读取出来(比如:stm8s发送0x68,波特率是19200.那么在串口助手接收的时候要57600的波特率才能正确读取出0x68)。
 楼主| 骑乌龟上课 发表于 2014-11-10 08:53 | 显示全部楼层
ayb_ice 发表于 2014-11-7 15:50
这个没有什么大神

仔细看手册吧,

我就是stm8s不停的发数据,用串口助手接收时,要用不同的波特率接收真可以正确的读取出来(比如:stm8s发送0x68,波特率是19200.那么在串口助手接收的时候要57600的波特率才能正确读取出0x68)。
ayb_ice 发表于 2014-11-10 08:54 | 显示全部楼层
骑乌龟上课 发表于 2014-11-10 08:53
我就是stm8s不停的发数据,用串口助手接收时,要用不同的波特率接收真可以正确的读取出来(比如:stm8s发 ...

不是叫你检查实际波特率吗
 楼主| 骑乌龟上课 发表于 2014-11-10 09:51 | 显示全部楼层
ayb_ice 发表于 2014-11-10 08:54
不是叫你检查实际波特率吗

关键是我拿其他人可以用的程序写进去,也会出现能进入中断,但是数据寄存器(DR)中无数据的情况。
 楼主| 骑乌龟上课 发表于 2014-11-10 09:53 | 显示全部楼层
骑乌龟上课 发表于 2014-11-10 09:51
关键是我拿其他人可以用的程序写进去,也会出现能进入中断,但是数据寄存器(DR)中无数据的情况。 ...

如此图情况一样的。有没有可能硬件上有问题呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2014-11-10 10:49 | 显示全部楼层
可能根本就没有问题

有些寄存器只能读一次的,或者现在还不能读,稍后才可以读。。。

仔细看看手册吧
PIGYONG801 发表于 2014-11-10 11:24 | 显示全部楼层
这个不是个事,好好看下书
 楼主| 骑乌龟上课 发表于 2014-11-10 12:10 | 显示全部楼层
PIGYONG801 发表于 2014-11-10 11:24
这个不是个事,好好看下书

我们公司其他人也看了,也不知道什么情况。。。郁闷卡了好久了,从来没碰到过这样的问题。
 楼主| 骑乌龟上课 发表于 2014-11-10 12:14 | 显示全部楼层
ayb_ice 发表于 2014-11-10 10:49
可能根本就没有问题

有些寄存器只能读一次的,或者现在还不能读,稍后才可以读。。。

应该不是能不能读的原因,我单步调查看寄存器,可是里面没有数据,很奇怪、。
 楼主| 骑乌龟上课 发表于 2014-11-13 08:26 | 显示全部楼层
问题解决了,只是在每一次发送命令的时候初始化一次UART3就可以了。于是我在程序中把初始化UART3 的程序部分放到最后初始化也是可以的。所以我觉得是我在初始化程序时其他方面的初始化影响到了串口3.但是真正的具体问题我还是没有发现,只是单纯的解决了问题。。。非常感谢各位的回答。。。感激不尽。。。:)
 楼主| 骑乌龟上课 发表于 2014-11-13 08:26 | 显示全部楼层
结贴了,再一次感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

52

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部