OpenEdv-开源电子网

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

求助:delay_ms被外部中断打断后为何会重新开始延时

[复制链接]

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2013-4-17
在线时间
13 小时
发表于 2016-5-26 10:36:42 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 黄鱼 于 2016-5-26 10:40 编辑

各位大神请教个问题:    我们在运行原子哥mini板配套的外部中断实验时,发现主函数中的delay_ms被外部中断打断后,会从本次延时中跳出重新开始新一轮的延时,具体现象如下:

    主函数中,每秒会通过串口打印一个OK,如图2所示。但是图0中的三个中断触发后,即就是按下按键时,我们也同时观察到串口调试助手立刻收到了OK,按几下就会立刻收到几个OK,三个按键皆是如此。    而我们随手调用了51单片机的延时函数后,OK的接受频率基本固定,与按键无关,如图1所示。
    我们查阅了相关资料但仍然一脸懵逼。。。请各位大神指点!
0.png
2.png
1.png

最佳答案

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

因为原子哥的delay函数是用systick定时器写的,调用delay函数后,SysTick->CTRL的第16位已经变为1,再回到原先延时函数的断点,“do{temp=SysTick->CTRL;}while((temp&0x01)&&!(temp&(1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2013-4-17
在线时间
13 小时
 楼主| 发表于 2016-5-26 10:36:43 | 显示全部楼层
jiutianshenjian 发表于 2016-5-26 14:13
你才是前辈。为啥会重新开始计时呢?

因为原子哥的delay函数是用systick定时器写的,调用delay函数后,SysTick->CTRL的第16位已经变为1,再回到原先延时函数的断点,“do{temp=SysTick->CTRL;}while((temp&0x01)&&!(temp&(1<<16)));        ”中的条件判断已不满足,所以本次延时立刻结束,并开始下一次延时。不知道我这样理解对不对,前辈你说呢?
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2016-5-26 11:48:30 | 显示全部楼层
中断别加延时啊
小小蜗牛
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2013-4-17
在线时间
13 小时
 楼主| 发表于 2016-5-26 12:13:56 来自手机 | 显示全部楼层
jiutianshenjian 发表于 2016-5-26 11:48
中断别加延时啊

前辈这么一说我才注意到,原子哥的中断里为了消抖又调用了delay函数,这样的确就会重新延时了
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2016-5-26 14:13:38 | 显示全部楼层
你才是前辈。为啥会重新开始计时呢?
小小蜗牛
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-5-28 22:04:50 | 显示全部楼层
黄鱼 发表于 2016-5-26 21:01
因为原子哥的delay函数是用systick定时器写的,调用delay函数后,SysTick->CTRL的第16位已经变为1,再回 ...

对,所以中断里面调用delay,会导致被打断函数的delay失效一次
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 20:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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