OpenEdv-开源电子网

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

为什么使用库函数不可以使用if( TIM_GetITStatus(TIM5,TIM_IT_Update) == SET)来判断定时器产生的中断?

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2020-12-5
在线时间
3 小时
发表于 2020-12-12 16:17:20 | 显示全部楼层 |阅读模式
本帖最后由 chaoqing 于 2020-12-12 16:30 编辑

为什么使用库函数不可以使用if( TIM_GetITStatus(TIM5,TIM_IT_Update) == SET)来判断定时器是否产生的中断?

中断服务函数如下:
        static u32 cnt = 0;
        static u32 sum_tim5 = 0;
        static u32 flag = 0;
        static u32 key_val = 0;
        //判断定时器是否产生中断
        if(TIM_GetITStatus(TIM5,TIM_IT_Update) == SET)
        {
                TIM_ClearFlag(TIM5,TIM_FLAG_Update);
                if(flag != 0)
                {
                        printf("11\r\n");
                        cnt++;
                }
        }
       
        //判断通道是否产生中断
        if(TIM_GetITStatus(TIM5,TIM_IT_CC1) == SET)
        {
                TIM_ClearFlag(TIM5,TIM_FLAG_CC1);
                //判断按键是否被按下
                if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == Bit_SET)
                {
                        key_val = TIM_GetCapture1(TIM5);
                        flag = 1;
                }
                else
                {
                        sum_tim5 = 65535 * cnt + TIM_GetCapture1(TIM5) - key_val;
                        printf("%d\r\n",sum_tim5/1000);
                        cnt = 0;
                        sum_tim5 = 0;
                        flag = 0;
                        key_val = 0;
                       
                }
        }
   

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

使用道具 举报

4

主题

84

帖子

1

精华

高级会员

Rank: 4

积分
666
金钱
666
注册时间
2013-10-21
在线时间
88 小时
发表于 2020-12-14 09:22:07 | 显示全部楼层
TIM_IT_Update 这个是判断中断是否开启的,判断中断标志位的是TIM_FLAG_Update

HAL库里面是2个函数
  1. if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)
  2.         {
  3.                 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
  4.                 {
  5.                        
  6.                 }
  7.         }
复制代码


你看看标准库里面是不是有
TIM_GetFlagStatus(TIM5,TIM_FLAG_Update)之类的函数
回复 支持 1 反对 0

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-12-14 09:16:36 | 显示全部楼层
初始化不正确吧
回复 支持 反对

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4951
金钱
4951
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-12-14 10:05:12 | 显示全部楼层
TIM_FLAG_UPDATE与TIM_IT_UPDATE宏定义的值不同,对照一下中断标志寄存器
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2020-12-5
在线时间
3 小时
 楼主| 发表于 2020-12-23 11:06:45 | 显示全部楼层
旮旯旭 发表于 2020-12-14 09:22
TIM_IT_Update 这个是判断中断是否开启的,判断中断标志位的是TIM_FLAG_Update

HAL库里面是2个函数

谢谢大佬
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 07:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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