打印
[STM8]

STM8单片机串口接收中断不停进入数据溢出中断

[复制链接]
2273|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
@若水|  楼主 | 2017-12-13 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目中,有两个中断,一个是串口接收中断,一个是定时器2中断

串口波特率为250K,数据传输采用1+8+2bit,即一个字节44us

串口接收硬件中断的优先级为:21
定时器2硬件中断的优先级为:23

1、代码运行后,出现丢数据现象,调试方式,屏蔽所有代码,只保留串口接收中断代码,与串口数据处理代码,居然正常,所以确定丢数据是软件不合理导致的。

2、逐渐开放其它代码,直接开启定时器2中断时,问题马上重现,所以丢数据是由于开启定时器2中断导致的。

那么为什么开启定时器2中断就会丢数据呢,难道是串口接收的中断优先级低于定时器2的中断优先级?

一查手册,发现串口接收中断的优先级并不低于定时器2的中断优先级。

后来猜测在默认的情况下,是不是处于,同时中断管理模式下呢?这种情况下是不允许发生中断嵌套的,所以在代码中手动添加以下代码:
disableInterrupts();
ITC->ISPR6 |= 0x0C;//将串口接收中断的软件优先级设置为最高级
ITC->ISPR6 &= 0x3F;//将TIM4定时中断的软件优先级设置为最低级
enableInterrupts();


编译,下载,进入仿真

Duang~

问题解决,不再出现串口接收溢出中断的问题了。也不丢数据了,哈哈哈哈哈……

沙发
mmuuss586| | 2017-12-13 14:50 | 只看该作者

感谢分享经验

使用特权

评论回复
板凳
husoffer| | 2017-12-13 15:50 | 只看该作者

使用特权

评论回复
地板
@若水|  楼主 | 2017-12-14 08:35 | 只看该作者

欢迎郑总

使用特权

评论回复
5
@若水|  楼主 | 2017-12-14 08:35 | 只看该作者

使用特权

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

本版积分规则

个人签名:专注于以太网  GPRS GSM CAN 485 继电器等工控模块 小店:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-6466605198.19.7OO7ja&id=522606430970 回头之人,永远无法见到真相

26

主题

2686

帖子

6

粉丝