OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7233|回复: 8

为什么定时器中断要清除而串口不必?

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-2-26
在线时间
3 小时
发表于 2016-2-26 12:54:25 | 显示全部楼层 |阅读模式
2金钱
光盘资料中的串口实验和定时器实验中,为什么定时器的中断函数中有清除中断标志位,而串口的中断函数中没有啊?
而且我自己写程序的时候如果不把定时器中断清除他好像会一直产生中断。

这是串口接收中断函数代码

void USART1_IRQHandler(void)
{
        u8 res;
         if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
     res= USART_ReceiveData(USART1);
     USART_SendData(USART1,res);   
  }
}

这是定时器向上计数中断函数代码

void TIM3_IRQHandler(void)   //TIM3中断
{
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
                {
                TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx更新中断标志
                LED1=!LED1;
                }
}

新人求指教~!

最佳答案

查看完整内容[请看2#楼]

因为串口当你读取 USARTx->DR 中的值后,会自动清除串口接收中断标志, 这个说明书上有介绍, 不过我还是建意加上清除中断标志;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-2-26 12:54:26 | 显示全部楼层
因为串口当你读取  USARTx->DR 中的值后,会自动清除串口接收中断标志,
这个说明书上有介绍,
不过我还是建意加上清除中断标志;      
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2016-2-26 13:07:03 | 显示全部楼层
读取数据寄存器dr时  硬件清除中断标准
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2016-2-26 13:14:21 | 显示全部楼层
串口在中断函数中通过读 USART_DR 可以将RXNE(读数据寄存器非空) 清零!
回复

使用道具 举报

22

主题

2255

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4511
金钱
4511
注册时间
2013-4-22
在线时间
337 小时
发表于 2016-2-26 14:03:40 | 显示全部楼层
最好清除,以防发生不可预料的错误
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-2-26 14:20:45 | 显示全部楼层
x.png
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-2-26
在线时间
3 小时
 楼主| 发表于 2016-2-26 16:37:33 | 显示全部楼层
明白了,谢谢大家!
回复

使用道具 举报

6

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-1-19
在线时间
38 小时
发表于 2016-2-27 10:05:22 | 显示全部楼层

一般手册都有说明,只是大家很少去找。
原来你也在这里
回复

使用道具 举报

2

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2016-4-21
在线时间
38 小时
发表于 2017-4-30 19:03:39 | 显示全部楼层
为什么我看着说USART_FLAG_RXNE: Receive data register not empty flag是个宏定义?不能被清零?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 18:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表