打印

串口总是进入接收中断

[复制链接]
6896|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梁喜幸|  楼主 | 2010-4-2 00:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 梁喜幸 于 2010-4-2 09:43 编辑

我的程序能中断接收到正确的数据,但是程序总是进入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);                                                //初始化
}
沙发
grant_jx| | 2010-4-2 08:49 | 只看该作者
进了UART中断后,记得清接收中断标志位再出去

使用特权

评论回复
板凳
梁喜幸|  楼主 | 2010-4-2 09:42 | 只看该作者
我已经清了,但是在程序一开始运行就离开进入中断了,但不知道进入的哪个中断(我没有仿真器)。出来中断程序,后面的程序都没有机会运行。
  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);//清除中断标志
}

使用特权

评论回复
地板
梁喜幸|  楼主 | 2010-4-2 09:47 | 只看该作者
我一运行完 NVIC_Init(&NVIC_InitStructure);  程序立刻就开始进入中断,不再运行后面的代码!

使用特权

评论回复
5
ST_ARM| | 2010-4-2 11:59 | 只看该作者
你又没有仿真器,你怎么知道运行完 NVIC_Init(&NVIC_InitStructure);  程序立刻就开始进入中断?而且程序总是进入ISR中断?

另外在中断程序中不需要这个NVIC_ClearPendingIRQ(USART1_IRQn;

使用特权

评论回复
6
梁喜幸|  楼主 | 2010-4-2 16:04 | 只看该作者
因为我在NVIC_Init(&NVIC_InitStructure);  后面还有显示的程序,不用这句就能有显示,如果加上这句打开中断,就无法显示,说明程序运行不到下面的显示程序!

使用特权

评论回复
7
有意思| | 2010-4-2 23:53 | 只看该作者
如果是STM8,有一个OverRun error flag中断,就是说,接收到的数据没有取走,这时候又来数据了,
就会有这个OverRun,我就是没有清这个标志,所以一直进UART接收中断,
UART1_GetFlagStatus(UART1_FLAG_OR);读取后自动清除

使用特权

评论回复
8
梁喜幸|  楼主 | 2010-4-4 21:35 | 只看该作者
我没有仿真器,所以搞不清楚程序到底跑到哪里去了,只能相应中断而已,其他的都运行不到。有没有遇到同样情况的大虾,讨论一下!

使用特权

评论回复
9
zwll| | 2010-4-5 12:03 | 只看该作者
加一些返回看看程序怎么运行的

使用特权

评论回复
10
machunshui| | 2010-4-5 15:10 | 只看该作者
看看是不是硬件问题,
RX引脚如果没有上拉的话,
电路有干扰可能会导致不断进入接收中断

使用特权

评论回复
11
tongshuaibb| | 2011-3-9 22:04 | 只看该作者
我是只能进发送中断你进不了接收中断

使用特权

评论回复
12
btiger2000| | 2011-3-9 22:18 | 只看该作者
https://bbs.21ic.com/icview-222286-1-1.html

你看看这个,也许能解决你的问题

使用特权

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

本版积分规则

2

主题

23

帖子

0

粉丝