OpenEdv-开源电子网

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

定时器中断处理问题

[复制链接]

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-2-18
在线时间
0 小时
发表于 2014-4-18 19:40:48 | 显示全部楼层 |阅读模式

程序设计为1ms定时中断,然后计入定时器中断函数,在处理中断函数时(中断大概需要200us),定时器还在继续走吗,还是等中断函数处理完后,定时器继续原来被打断的地方继续计时,等待下次定时时间到,再次计入中断函数。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-18 23:00:29 | 显示全部楼层
中断后,还会继续走(从0开始)。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-2-18
在线时间
0 小时
 楼主| 发表于 2014-4-19 18:32:57 | 显示全部楼层
若是使用通用定时器写的延时函数,比如
while(i--)
{

}
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-2-18
在线时间
0 小时
 楼主| 发表于 2014-4-19 18:40:38 | 显示全部楼层
还有这样一个问题请叫一下,比如 
while(i--) 

        ....开定时器3;//使用定时器3,1ms一次中断
          delay_ms(100);//用通用定时器2做的延时函数
}
void TIM3_IRQHandler(void)   //TIM3中断
{。。。。。} 
问题是,由于每次中断函数处理都要打断延时函数,完事后,再回到延时函数,那么最终延时函数delay_ms(100)还是100ms吗
一下是我的定时器延时函数
void delay_us(u16 nus)  //延时 n us,实现微妙级延时
{
TIM_SetAutoreload(TIM2, nus-1);
TIM_Cmd(TIM2,ENABLE);
while(1)
{
  if(TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) != RESET)
{
TIM_ClearFlag(TIM2,TIM_FLAG_Update);
break;
}
}
TIM_Cmd(TIM2,DISABLE);
}

void delay_ms(u16 nms)  //延时n ms,实现毫秒级延时
{
while(nms--)
{
delay_us(1000); //延时 1ms
}
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-19 23:15:49 | 显示全部楼层
回复【3楼】江南一片青lmz:
---------------------------------
一样的原理。
多了个中断罢了。
这种延时效果是不太好的,反而影响其他中断的执行。


回复【4楼】江南一片青lmz:
---------------------------------
前面我就说了你这种效果不好,频繁中断不说,还影响其他中断的执行。
要延时,直接i--,或者参考我们的代码,用systick来做,一般延时不推荐用中断做(osi除外)。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-2-18
在线时间
0 小时
 楼主| 发表于 2014-4-21 09:44:39 | 显示全部楼层
原子哥,你说的i--,是说的软延时吗,此外为啥用systick会好些呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-21 20:02:22 | 显示全部楼层
回复【6楼】江南一片青lmz:
---------------------------------
准确。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-9 20:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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