打印
[MCU]

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

[复制链接]
2362|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
骑乌龟上课|  楼主 | 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 | 只看该作者

使用特权

评论回复
5
骑乌龟上课|  楼主 | 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);
}

使用特权

评论回复
6
骑乌龟上课|  楼主 | 2014-11-7 14:33 | 只看该作者
再次鉴定之后,发现是波特率不匹配的原因,发送过来的是19200,接收方要用57600才可以正确。那么要怎么样才可以设置成一样的波特率19200呢????大神请赐教!!!

使用特权

评论回复
7
ayb_ice| | 2014-11-7 15:50 | 只看该作者
这个没有什么大神

仔细看手册吧,
估计是你时钟频率搞错了吧

使用特权

评论回复
8
ayb_ice| | 2014-11-7 15:52 | 只看该作者
STM8不停的发数据,用示波器看看波特率就知道情况了

使用特权

评论回复
9
骑乌龟上课|  楼主 | 2014-11-10 08:52 | 只看该作者
ayb_ice 发表于 2014-11-7 15:52
STM8不停的发数据,用示波器看看波特率就知道情况了

我就是stm8s不停的发数据,用串口助手接收时,要用不同的波特率接收真可以正确的读取出来(比如:stm8s发送0x68,波特率是19200.那么在串口助手接收的时候要57600的波特率才能正确读取出0x68)。

使用特权

评论回复
10
骑乌龟上课|  楼主 | 2014-11-10 08:53 | 只看该作者
ayb_ice 发表于 2014-11-7 15:50
这个没有什么大神

仔细看手册吧,

我就是stm8s不停的发数据,用串口助手接收时,要用不同的波特率接收真可以正确的读取出来(比如:stm8s发送0x68,波特率是19200.那么在串口助手接收的时候要57600的波特率才能正确读取出0x68)。

使用特权

评论回复
11
ayb_ice| | 2014-11-10 08:54 | 只看该作者
骑乌龟上课 发表于 2014-11-10 08:53
我就是stm8s不停的发数据,用串口助手接收时,要用不同的波特率接收真可以正确的读取出来(比如:stm8s发 ...

不是叫你检查实际波特率吗

使用特权

评论回复
12
骑乌龟上课|  楼主 | 2014-11-10 09:51 | 只看该作者
ayb_ice 发表于 2014-11-10 08:54
不是叫你检查实际波特率吗

关键是我拿其他人可以用的程序写进去,也会出现能进入中断,但是数据寄存器(DR)中无数据的情况。

使用特权

评论回复
13
骑乌龟上课|  楼主 | 2014-11-10 09:53 | 只看该作者
骑乌龟上课 发表于 2014-11-10 09:51
关键是我拿其他人可以用的程序写进去,也会出现能进入中断,但是数据寄存器(DR)中无数据的情况。 ...

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

使用特权

评论回复
14
ayb_ice| | 2014-11-10 10:49 | 只看该作者
可能根本就没有问题

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

仔细看看手册吧

使用特权

评论回复
15
PIGYONG801| | 2014-11-10 11:24 | 只看该作者
这个不是个事,好好看下书

使用特权

评论回复
16
骑乌龟上课|  楼主 | 2014-11-10 12:10 | 只看该作者
PIGYONG801 发表于 2014-11-10 11:24
这个不是个事,好好看下书

我们公司其他人也看了,也不知道什么情况。。。郁闷卡了好久了,从来没碰到过这样的问题。

使用特权

评论回复
17
骑乌龟上课|  楼主 | 2014-11-10 12:14 | 只看该作者
ayb_ice 发表于 2014-11-10 10:49
可能根本就没有问题

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

应该不是能不能读的原因,我单步调查看寄存器,可是里面没有数据,很奇怪、。

使用特权

评论回复
18
骑乌龟上课|  楼主 | 2014-11-13 08:26 | 只看该作者
问题解决了,只是在每一次发送命令的时候初始化一次UART3就可以了。于是我在程序中把初始化UART3 的程序部分放到最后初始化也是可以的。所以我觉得是我在初始化程序时其他方面的初始化影响到了串口3.但是真正的具体问题我还是没有发现,只是单纯的解决了问题。。。非常感谢各位的回答。。。感激不尽。。。:)

使用特权

评论回复
19
骑乌龟上课|  楼主 | 2014-11-13 08:26 | 只看该作者
结贴了,再一次感谢!!

使用特权

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

本版积分规则

8

主题

52

帖子

1

粉丝