17927|19

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口总是进入接收中断 [复制链接]



我的程序能中断接收到正确的数据,但是程序总是进入ISR中断,程序执行不了其他的代码,请高手指点!中断配置函数如下:

void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  /* Configure the NVIC Preemption Priority Bits */  


NVIC_ClearPendingIRQ(USART1_IRQn);//清除中断标志位
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
  /* Enable the USARTy Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//通道设置为串口1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;   //中断占先等级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;              //中断响应优先级5
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;             //打开中断
NVIC_Init(&NVIC_InitStructure);                                                //初始化
}
此帖出自stm32/stm8论坛

最新回复

我遇到的情况是,发生了溢出中断,但是没有开启ERR中断,解决办法是USART初始化的时候同时开启ERR中断使能,然后在ISR中判断USART_IT_ORE是否置位,如果置位,则清除即可。  详情 回复 发表于 2017-3-18 12:07
点赞 关注
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(中级)

推荐
 
只要你在接收中断调用读取接收寄存器的函数就解决了,   i = USART_ReceiveData(USART1); 我也被它纠结了两个钟
此帖出自stm32/stm8论坛
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 进了UART中断后,记得清接收中断标志位再出去
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我已经清了,但是在程序一开始运行就离开进入中断了,但不知道进入的哪个中断(我没有仿真器)。出来中断程序,后面的程序都没有机会运行。
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
    /* Read one byte from the receive data register */
    USART_ClearITPendingBit(USART1,  USART_IT_RXNE);  //清除中断标志
   NVIC_ClearPendingIRQ(USART1_IRQn);//清除中断标志
}
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 我一运行完 NVIC_Init(&NVIC_InitStructure);  程序立刻就开始进入中断,不再运行后面的代码!
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

5
 
你又没有仿真器,你怎么知道运行完 NVIC_Init(&NVIC_InitStructure);  程序立刻就开始进入中断?而且程序总是进入ISR中断?

另外在中断程序中不需要这个NVIC_ClearPendingIRQ(USART1_IRQn;
此帖出自stm32/stm8论坛
 
 
 

回复

11

帖子

0

TA的资源

禁止访问

6
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 ghh
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 hhhhhhhhhhhhh
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 hhhhhhhhhhhhhh
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 jgfjjjjjjjj
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

11
 
如果是STM8,有一个OverRun error flag中断,就是说,接收到的数据没有取走,这时候又来数据了,
就会有这个OverRun,我就是没有清这个标志,所以一直进UART接收中断,
UART1_GetFlagStatus(UART1_FLAG_OR);读取后自动清除
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 我没有仿真器,所以搞不清楚程序到底跑到哪里去了,只能相应中断而已,其他的都运行不到。有没有遇到同样情况的大虾,讨论一下!
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 加一些返回看看程序怎么运行的
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
看看是不是硬件问题,
RX引脚如果没有上拉的话,
电路有干扰可能会导致不断进入接收中断
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 我是只能进发送中断你进不了接收中断
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

16
 
https://bbs.eeworld.com.cn/icview-222286-1-1.html

你看看这个,也许能解决你的问题
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

18
 
sonyericsson025 发表于 2012-4-24 17:17
只要你在接收中断调用读取接收寄存器的函数就解决了,
  i = USART_ReceiveData(USAR ...

正解在这里。
此帖出自stm32/stm8论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

19
 
UART发送脚设置成悬空发送模式,接受脚设置上拉输入模式。
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 
我遇到的情况是,发生了溢出中断,但是没有开启ERR中断,解决办法是USART初始化的时候同时开启ERR中断使能,然后在ISR中判断USART_IT_ORE是否置位,如果置位,则清除即可。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表