OpenEdv-开源电子网

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

求助原子哥,关于TIM_IT_Update和TIM_FLAG_Update的问题

[复制链接]

57

主题

316

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1344
金钱
1344
注册时间
2018-1-11
在线时间
156 小时
发表于 2018-1-29 12:56:37 | 显示全部楼层 |阅读模式
3金钱
原子哥的代码是:
void TIM3_IRQHandler(void)   //TIM3中断
{
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
                {
                TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx更新中断标志
                LED1=!LED1;
                }
}

但是清除中断标志位,用TIM_FLAG_Update也是。
在宏定义中:
这两个的值是一样的,所以有区别吗,没区别的话,为啥又要定义2个?
求助原子哥,解释一下。

062010F591224FC89D620A4E6FF1E820.jpg
2F61E525554B4D7CB24988DFB22A7385.jpg

最佳答案

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

通过TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)和TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)的定义,可以知道,它们都是作用在TIMx->SR寄存器上的,所以这两个值是一样的。至于为什么取两个不同的名字,应该是为了方便阅读和理解代码吧。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2017-5-16
在线时间
64 小时
发表于 2018-1-29 12:56:38 | 显示全部楼层
通过TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)和TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)的定义,可以知道,它们都是作用在TIMx->SR寄存器上的,所以这两个值是一样的。至于为什么取两个不同的名字,应该是为了方便阅读和理解代码吧。
回复

使用道具 举报

57

主题

316

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1344
金钱
1344
注册时间
2018-1-11
在线时间
156 小时
 楼主| 发表于 2018-1-29 19:11:37 | 显示全部楼层
jxh123 发表于 2018-1-29 12:56
通过TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)和TIM_ClearFlag(TIM_TypeDef* TIMx, ui ...

谢谢,谢谢
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2018-5-21
在线时间
41 小时
发表于 2019-3-30 09:56:01 | 显示全部楼层
实际上两个函数实现的功能是一样的,都是清除相对应的标志位,只是标志位和中断位含义不一样,是标志位但是不一定会产生中断
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 10:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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