OpenEdv-开源电子网

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

delay_us延迟

[复制链接]

12

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-2-16
在线时间
71 小时
发表于 2016-11-16 23:04:09 来自手机 | 显示全部楼层 |阅读模式
在ucosii中,如果在最高优先级的任务中使用delay_us进行延迟,并且delay_us中没有上锁,那么延迟会被打断么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2016-8-18
在线时间
147 小时
发表于 2016-11-16 23:07:25 | 显示全部楼层
应该不会吧,我初学,目测不会引起任务调度
回复 支持 反对

使用道具 举报

12

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-2-16
在线时间
71 小时
 楼主| 发表于 2016-11-17 07:49:51 来自手机 | 显示全部楼层
可是我这样试了,delay_us(1000000)并不能达到延迟1秒的效果。
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6656
金钱
6656
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-11-17 11:55:08 | 显示全部楼层
会被中断打断.延时时间会比设计的要长.不建议使用这种方式延时(浪费了CPU的时间).可以使用定时器+事件的方式来操作.延时1毫秒以下另当别论.
回复 支持 反对

使用道具 举报

12

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-2-16
在线时间
71 小时
 楼主| 发表于 2016-11-17 17:45:58 来自手机 | 显示全部楼层
操作系统 发表于 2016-11-17 11:55
会被中断打断.延时时间会比设计的要长.不建议使用这种方式延时(浪费了CPU的时间).可以使用定时器+事件的方 ...

延迟时间没有变长啊,反而感觉跟没有延迟一样。
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6656
金钱
6656
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-11-17 19:32:05 | 显示全部楼层
本帖最后由 操作系统 于 2016-11-17 19:38 编辑
xws 发表于 2016-11-17 17:45
延迟时间没有变长啊,反而感觉跟没有延迟一样。

相信操作系统不会错。
回复 支持 反对

使用道具 举报

12

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-2-16
在线时间
71 小时
 楼主| 发表于 2016-11-17 21:17:50 来自手机 | 显示全部楼层
操作系统 发表于 2016-11-17 19:32
相信操作系统不会错。

我将参数改为3000000延迟3秒,结果好像直接跳过了这段延迟。不知道是怎么回事
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6656
金钱
6656
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-11-17 22:35:49 | 显示全部楼层
xws 发表于 2016-11-17 21:17
我将参数改为3000000延迟3秒,结果好像直接跳过了这段延迟。不知道是怎么回事

难道你开了看门狗,复位了??就是有其它的中断打断这个函数的执行。他还是会回来的。时间会延长很少。被延长的时间就 是中断服务函数执行的时间。可能看不出来。
使用DELAY之类的函数进行延时操作,对于大型复杂的案子是没有好处的。因为你延时操作一毫秒,整个代码可以跑一圈了。
回复 支持 反对

使用道具 举报

12

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-2-16
在线时间
71 小时
 楼主| 发表于 2016-11-18 16:05:36 来自手机 | 显示全部楼层
操作系统 发表于 2016-11-17 22:35
难道你开了看门狗,复位了??就是有其它的中断打断这个函数的执行。他还是会回来的。时间会延长很少。被 ...

没有啊,delay_us就是不执行
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6656
金钱
6656
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-11-18 16:09:45 | 显示全部楼层
可以仿真看一下具体是什么原因没有进入到这个函数里面去
回复 支持 反对

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2016-11-18 16:57:51 | 显示全部楼层
给你个考虑方向,看看你的编译器优化级别,是否被优化掉了
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-2-5
在线时间
14 小时
发表于 2016-11-18 16:59:38 来自手机 | 显示全部楼层
ucos调用延时会挂起任务的。原子那个延时函数,除了系统延时,还有一部分就是死等
回复 支持 反对

使用道具 举报

12

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-2-16
在线时间
71 小时
 楼主| 发表于 2016-11-18 22:05:34 来自手机 | 显示全部楼层
已解决,有一个宏定义没加括号,导致两个数相乘越界。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 22:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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