OpenEdv-开源电子网

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

TIM_ClearITPendingBit(TIM2,TIM_IT_Update)和TIM_ClearFlag(TIM2,TIM_FLAG_Update)

[复制链接]

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-8-30
在线时间
2 小时
发表于 2012-12-2 16:28:08 | 显示全部楼层 |阅读模式

RT

这两个函数 功能是不是一样的?

如果是一样的为啥还写两个函数来区别啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-2 19:30:52 | 显示全部楼层
回复【楼主位】qiangnubing:
---------------------------------
st不是有库函数参考手册么?你可以找找。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
408
金钱
408
注册时间
2016-1-28
在线时间
72 小时
发表于 2016-4-3 20:20:00 | 显示全部楼层
楼主这个问题弄明白了吗,我现在也是不清楚这两个的区别,求教
回复 支持 反对

使用道具 举报

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-6-9
在线时间
24 小时
发表于 2016-7-1 10:56:21 | 显示全部楼层
本帖最后由 列兵一号 于 2016-7-1 10:57 编辑

手册中第一个的解释是Clears the TIMx's interrupt pending bits,第二个的解释是Clears the TIMx's pending flags.     这两个的区别我也没有搞明白
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2016-7-1
在线时间
3 小时
发表于 2016-7-3 21:54:15 | 显示全部楼层
TIM_GetITStatus函数中会先判断这种中断是否使能,使能了才去判断中断标志位,而TIM_GetFlagStatus直接用来判断状态标志位。按照这种说法来看,TIM_ClearITPendingBit和TIM_ClearFlag,我觉得有IT的会先判断中断是否使能了,而没有IT的则直接使用。如果说错了,欢迎指正
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-7-7
在线时间
9 小时
发表于 2016-11-2 14:45:25 | 显示全部楼层
正点原子 发表于 2012-12-2 19:30
回复【楼主位】qiangnubing:
---------------------------------
st不是有库函数参考手册么?你可以找找。

http://bbs.21ic.com/icview-816590-1-1.html
[STM32F0] 【中文资料】STM32固件库函数中文说明(pdf版,有目录)

其他网站找到的,感谢这位楼主,分享出来
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2015-10-30
在线时间
7 小时
发表于 2017-6-1 17:18:15 | 显示全部楼层
我也有这个疑问,清除中断一定要用TIM_ClearITPendingBit这个,可是TIM_ClearFlag的作用又是啥?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2021-1-10
在线时间
13 小时
发表于 2021-1-28 22:36:51 | 显示全部楼层
TIM_ClearITPendingBit与TIM_ClearFlag的区别恐怕不是能不能清除中断标记,而是能不能清除重复捕获标记
以下是解释:

先把TIM_ClearITPendingBit();和TIM_ClearFlag();的定义摆出来:
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
{
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
  assert_param(IS_TIM_IT(TIM_IT));
  /* Clear the IT pending Bit */
  TIMx->SR = (uint16_t)~TIM_IT;
}

void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
{  
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
  assert_param(IS_TIM_CLEAR_FLAG(TIM_FLAG));
   
  /* Clear the flags */
  TIMx->SR = (uint16_t)~TIM_FLAG;
}

可以看出他们的区别只有第二位形参不同,我找了一下这两个形参可以被赋的所有值,如下:
#define TIM_IT_Update                      ((uint16_t)0x0001)
#define TIM_IT_CC1                         ((uint16_t)0x0002)
#define TIM_IT_CC2                         ((uint16_t)0x0004)
#define TIM_IT_CC3                         ((uint16_t)0x0008)
#define TIM_IT_CC4                         ((uint16_t)0x0010)
#define TIM_IT_COM                         ((uint16_t)0x0020)
#define TIM_IT_Trigger                     ((uint16_t)0x0040)
#define TIM_IT_Break                       ((uint16_t)0x0080)

#define TIM_FLAG_Update                    ((uint16_t)0x0001)
#define TIM_FLAG_CC1                       ((uint16_t)0x0002)
#define TIM_FLAG_CC2                       ((uint16_t)0x0004)
#define TIM_FLAG_CC3                       ((uint16_t)0x0008)
#define TIM_FLAG_CC4                       ((uint16_t)0x0010)
#define TIM_FLAG_COM                       ((uint16_t)0x0020)
#define TIM_FLAG_Trigger                   ((uint16_t)0x0040)
#define TIM_FLAG_Break                     ((uint16_t)0x0080)
#define TIM_FLAG_CC1OF                     ((uint16_t)0x0200)
#define TIM_FLAG_CC2OF                     ((uint16_t)0x0400)
#define TIM_FLAG_CC3OF                     ((uint16_t)0x0800)
#define TIM_FLAG_CC4OF                     ((uint16_t)0x1000)

也就是说,不同点只是TIM_ClearFlag比TIM_ClearITPendingBit多这四个形参而已,STM32中文参考手册对这四个形参的定义是:
CC4OF: 捕获/比较4重复捕获标记 (Capture/Compare 4 overcapture flag)
参见CC1OF描述。

CC3OF: 捕获/比较3重复捕获标记 (Capture/Compare 3 overcapture flag)
参见CC1OF描述。

CC2OF: 捕获/比较2重复捕获标记 (Capture/Compare 2 overcapture flag)
参见CC1OF描述。

CC1OF: 捕获/比较1重复捕获标记 (Capture/Compare 1 overcapture flag)
仅当相应的通道被配置为输入捕获时,该标记可由硬件置1。写0可清除该位。
0:无重复捕获产生;
1:计数器的值被捕获到TIMx_CCR1寄存器时, CC1IF的状态已经为’1’。

(小白入坑不到一个月,如有错误还望指正)
问题来了
什么是重复捕获标记?它的作用是什么?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-14 02:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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