OpenEdv-开源电子网

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

定时器中断中函数中无法计数

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-8-6
在线时间
4 小时
发表于 2021-8-6 15:21:10 | 显示全部楼层 |阅读模式
1金钱
void TIM3_IRQHandler(void)
{int u;
        if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断
        {        u++;
                printf("u =%d\n ",u);\
        if(u==30)//开始的时候先停10s,10s后开始抬升电机,3=1s.u=30
    {GPIO_SetBits(GPIOB,GPIO_Pin_3);       
            printf("进去之后 =%d\n ",u); }
        if(u==230)//抬升一分钟,u=200
                {GPIO_ResetBits(GPIOB,GPIO_Pin_3);
                printf("出来之后=%d\n ",u); }
   if(P_A_5==1)
                {         
                        GPIO_ResetBits(GPIOB,GPIO_Pin_3);
                        delay_ms(1000); //延时250ms
                        GPIO_SetBits(GPIOB,GPIO_Pin_6);
                        TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE);
                }
        }
        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  //清除中断标志位
}
这是定时器三的中断服务函数,我想在里面计数,计算中断溢出的次数从而控制不同时间要控制的引脚,但是我发现在中断服务函数定义一个u,则从串口输出的值为8400,如果是宏定义的话输出的值为u=1,就很奇怪,就是计算不到我的需要的值。

QQ截图20210806151957.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-8-8 00:46:37 | 显示全部楼层
局部变量不会累加的。。。进来一次,下次进来又是新的值了。。。你把u改成static试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-8-6
在线时间
4 小时
 楼主| 发表于 2021-8-8 22:50:23 | 显示全部楼层
正点原子 发表于 2021-8-8 00:46
局部变量不会累加的。。。进来一次,下次进来又是新的值了。。。你把u改成static试试。

我已经把他在宏定义处加了static也不行,但是我在主函数中加一个循环就能计数了,不知道为什么
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 05:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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