打印
[STM8]

关于stm8s串口中断问题

[复制链接]
2704|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm8s串口中断问题,程序有时候会直接卡死在串口中断,定时器中断正常,不过主函数main里面的while循环一直卡住不动了。原因就在于程序不断的跳进串口中断里,很想知道,什么情况下会出现这样的问题?求解决。每次进入串口中断,但是不会跳进接收字符函数里面,而且直接跳走,来回往复!

串口中断.png (62.28 KB )

串口中断.png
沙发
xyz549040622| | 2017-1-9 23:17 | 只看该作者
每次进入串口中断,但是不会跳进接收字符函数里面,而且直接跳走,来回往复!
太不可思议了吧,进了中断不执行就走啦?感觉有点不可能。。。你串口中断函数结尾翻转个led试试,确定进去不执行吗?怀疑

使用特权

评论回复
板凳
coderdd|  楼主 | 2017-1-10 08:44 | 只看该作者
xyz549040622 发表于 2017-1-9 23:17
每次进入串口中断,但是不会跳进接收字符函数里面,而且直接跳走,来回往复!
太不可思议了吧,进了中断不 ...

不用整led那么麻烦,下断点就可以了。测试确实进去就跳走。是不是有什么标志位没清

使用特权

评论回复
地板
xyz549040622| | 2017-1-10 08:58 | 只看该作者
coderdd 发表于 2017-1-10 08:44
不用整led那么麻烦,下断点就可以了。测试确实进去就跳走。是不是有什么标志位没清 ...

stm8s的中断用过好多次了,没有出现你这样的问题。你把最后一句清除中断标志去掉,在执行完读取缓存区数据后会自动清除标志的。

使用特权

评论回复
5
coderdd|  楼主 | 2017-1-10 09:14 | 只看该作者
一直死循环在箭头的位置,是程序跑着跑着进去的,不固定,有时候一直都不出现异常,有时候一会就出现了。大神再帮忙看下。这个串口平时用的不多,哎

死循环.png (43.6 KB )

死循环.png

使用特权

评论回复
6
coderdd|  楼主 | 2017-1-10 09:19 | 只看该作者
xyz549040622 发表于 2017-1-10 08:58
stm8s的中断用过好多次了,没有出现你这样的问题。你把最后一句清除中断标志去掉,在执行完读取缓存区数 ...

嗯,去掉是可以,但是估计不是真正的原因

使用特权

评论回复
7
我听闻| | 2017-1-10 09:20 | 只看该作者
if语句还能死循环?

使用特权

评论回复
8
coderdd|  楼主 | 2017-1-10 09:28 | 只看该作者
我听闻 发表于 2017-1-10 09:20
if语句还能死循环?

是跳出来立马又跳进去

使用特权

评论回复
9
皈依| | 2017-1-10 09:43 | 只看该作者
一会好一会不好。。。是干扰么?

使用特权

评论回复
10
超超呼叫乐乐| | 2017-1-10 09:50 | 只看该作者
刚才看了下STM8S的手册,楼主在执行完if(UART1_GetITStatus(UART1_IT_RXNE) != RESET)这条语句后,UART_SR的RXNE位被清零,导致楼主在5楼附上的图中箭头指向的位置的判断条件始终成立,楼主可去掉if(UART1_GetITStatus(UART1_IT_RXNE) != RESET)这条语句再试试,不知能否帮到你?

使用特权

评论回复
11
coderdd|  楼主 | 2017-1-10 12:39 | 只看该作者
超超呼叫乐乐 发表于 2017-1-10 09:50
刚才看了下STM8S的手册,楼主在执行完if(UART1_GetITStatus(UART1_IT_RXNE) != RESET)这条语句后,UART_SR ...

谢谢,我再试试。

使用特权

评论回复
12
laoxianccc| | 2017-1-17 22:04 | 只看该作者
串口接收引脚有没有设置为上来输入?悬空的话会出现这种情况。

使用特权

评论回复
13
doudouhi| | 2017-1-18 09:44 | 只看该作者
感觉可以在进中断的第一句就清标志,然后看下一次进去的时候有没有中断标志,应该就能找到原因了。

使用特权

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

本版积分规则

101

主题

385

帖子

11

粉丝