OpenEdv-开源电子网

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

关于UCOS软件定时器的疑问

[复制链接]

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
发表于 2016-8-4 23:44:46 | 显示全部楼层 |阅读模式
5金钱
最近在学UCOS,在学软件定时器的时候有些疑问:
1:进入定时器的回调函数后,能不能进行任务调度
2:如果定时时间没有到,能不能强制调用回调函数,并重新开始计时

另外还有一个问题:
原子哥在UCOS移植历程中的为什么要在往串口打印浮点数的时候要进入临界区。5

最佳答案

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

1,任务调度是启动系统后,系统自动运行的。软件定时器的任务优先级一般定为前三,回调函数不能执行延时类函数。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-4 23:44:47 来自手机 | 显示全部楼层
1,任务调度是启动系统后,系统自动运行的。软件定时器的任务优先级一般定为前三,回调函数不能执行延时类函数。
回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-27
在线时间
23 小时
发表于 2016-8-5 08:11:28 | 显示全部楼层
本帖最后由 zzz 于 2016-8-5 08:20 编辑

1:不知道,但是个人感觉在回调函数里进行任务调度没什么意义,回调函数执行完了应该就会进行一次任务调度,
2:OSTmrStop函数的第二个参数有一个可选项,人为停止定时器的时候立即调用回调函数的。

回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-6 00:37:44 来自手机 | 显示全部楼层
2,要搞懂创建软件定时器函数的opt两个选项。有信号量机制引入执行回调函数。
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-6 00:41:36 来自手机 | 显示全部楼层
附:进入临界区的目的是确保任务执行中不被别的中断事件打断,尤其是修改全局变量或重要代码段时要确保不被干扰
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-6 00:44:30 来自手机 | 显示全部楼层
真正理解软件定时器并不简单,要多仿真多做实例,而且不同的硬件平台有时效果不一样。
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-6 11:41:49 | 显示全部楼层
wangyan915205 发表于 2016-8-6 00:44
真正理解软件定时器并不简单,要多仿真多做实例,而且不同的硬件平台有时效果不一样。

非常感谢你的耐心解答,我的疑问都解开了,不过遇到一个新问题,就是UCOS系统一旦运行起来之后能不能将它占时停止掉
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-6 15:51:25 来自手机 | 显示全部楼层
你是说将已启动的os暂停吗?如果是这个意思,有什么意义呢?
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-6 18:52:45 | 显示全部楼层
wangyan915205 发表于 2016-8-6 15:51
你是说将已启动的os暂停吗?如果是这个意思,有什么意义呢?

因为UCOS的时钟最快也就1毫秒,我做运动解算的时候中断频率比较高,经常就进入死机,我已我想停止ucos后再做解算
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-7 10:25:32 来自手机 | 显示全部楼层
解算放到硬件定时器执行不行吗?再说你把所有任务挂起不就行了吗?
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-7-25
在线时间
8 小时
发表于 2016-8-7 17:24:01 | 显示全部楼层
软件定时器的优先级是多少,是不是<4?
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-7-25
在线时间
8 小时
发表于 2016-8-7 17:26:45 | 显示全部楼层
wangyan915205 发表于 2016-8-7 10:25
解算放到硬件定时器执行不行吗?再说你把所有任务挂起不就行了吗?


请问软件定时器的优先级是多少,是不是<4?
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-7 23:02:03 来自手机 | 显示全部楼层
一般设置为前3较好!
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-8 10:29:23 | 显示全部楼层
wangyan915205 发表于 2016-8-7 23:02
一般设置为前3较好!

后来问你那个问题我用的是硬件定时器
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-3-13 14:43:45 | 显示全部楼层
wangyan915205 发表于 2016-8-7 23:02
一般设置为前3较好!

在哪里设置软件定时器的优先级啊?
回复

使用道具 举报

13

主题

62

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2016-8-1
在线时间
157 小时
发表于 2018-3-16 09:54:10 | 显示全部楼层
DZKJXHxcz 发表于 2016-8-6 11:41
非常感谢你的耐心解答,我的疑问都解开了,不过遇到一个新问题,就是UCOS系统一旦运行起来之后能不能将它 ...

你怎么解决的?在回调函数理论可以调度吗 还有定时器没到回调函数可以吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 08:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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