OpenEdv-开源电子网

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

如何实现不在主循环判断的动态定时器

[复制链接]

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
发表于 2017-9-4 15:35:30 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 Eternal单人行 于 2017-9-5 14:12 编辑

STM32F107。怎么实现动态定时器,就像定时器定义一样,每次定时器的执行都是通过定时器的中断服务函数来进行。中断服务函数结束后,释放该定时器。不在主函数内做任何判断,不在主函数内做任何判断,不在主函数内做任何判断。主函数只有申请。

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

使用道具 举报

35

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2016-10-12
在线时间
53 小时
发表于 2017-9-4 15:46:21 | 显示全部楼层
定时器是硬件,释放不了,不知道你要实现何功能?
如果一定要,那就在中断函数最后,失能这个定时器就行。
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-9-4 15:49:44 | 显示全部楼层
kmmyk 发表于 2017-9-4 15:46
定时器是硬件,释放不了,不知道你要实现何功能?
如果一定要,那就在中断函数最后,失能这个定时器就行。

软件上的动态。就是想失能后,重新添加另一个中断服务
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-9-4 20:18:46 | 显示全部楼层
看上去有点像是多线程的感觉了.不在主循环,便是在中断了.或者是由操作系统完成.
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-9-5 09:10:01 | 显示全部楼层
操作系统 发表于 2017-9-4 20:18
看上去有点像是多线程的感觉了.不在主循环,便是在中断了.或者是由操作系统完成.

由中断完成
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2017-9-5 11:27:01 | 显示全部楼层
看不懂楼主想干啥
学无止境
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-9-5 11:55:12 | 显示全部楼层
jermy_z 发表于 2017-9-5 11:27
看不懂楼主想干啥

定时器不够用,想做个动态定时器,时间,中断服务函数的执行部分都是可变的,但要求不在主循环内进行判断
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-9-5 13:10:22 | 显示全部楼层
可以写个软件定时器,用硬件定时器做时基。时间到了,就调回调函数。一般的操作系统都会提供这种东西
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2017-9-5 13:36:43 | 显示全部楼层
Eternal单人行 发表于 2017-9-5 11:55
定时器不够用,想做个动态定时器,时间,中断服务函数的执行部分都是可变的,但要求不在主循环内进行判断

上操作系统
学无止境
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-9-5 14:12:24 | 显示全部楼层
shikihane 发表于 2017-9-5 13:10
可以写个软件定时器,用硬件定时器做时基。时间到了,就调回调函数。一般的操作系统都会提供这种东西

裸机,没操作系统,能实现吗?
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-5 14:12:31 | 显示全部楼层
Eternal单人行 发表于 2017-9-5 11:55
定时器不够用,想做个动态定时器,时间,中断服务函数的执行部分都是可变的,但要求不在主循环内进行判断

我觉得你还是说下你的功能好,或许没有你想得那么复杂呢?

当局者迷。
自己选择的路,成家前走完。
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-9-5 14:16:58 | 显示全部楼层
aiyeba 发表于 2017-9-5 14:12
我觉得你还是说下你的功能好,或许没有你想得那么复杂呢?

当局者迷。

需要多个定时器,实现不同的定时功能,但要求不占用主循环,主循环是2s循环一次。曾经想过累加器,但在主循环里检测累加值,时间就不准确了
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-5 14:35:01 | 显示全部楼层
Eternal单人行 发表于 2017-9-5 14:16
需要多个定时器,实现不同的定时功能,但要求不占用主循环,主循环是2s循环一次。曾经想过累加器,但在主 ...

一个定时器就可以包揽所有的时间节奏了。多设置一些全局变量就好了。

至于你说的,你不能进主循环。那么基本可以说你不能加任务了。

加也只能加简单的任务。然后直接放在中断里面做。

我有点怀疑你的框架没有搭建好。
自己选择的路,成家前走完。
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-9-5 14:56:25 | 显示全部楼层
Eternal单人行 发表于 2017-9-5 14:12
裸机,没操作系统,能实现吗?

当然能实现了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 07:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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