OpenEdv-开源电子网

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

求助,每隔10分钟执行某个功能,持续1分钟。如何编写

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-7-5
在线时间
4 小时
发表于 2018-7-29 09:44:55 | 显示全部楼层 |阅读模式
2金钱
如题,比如说每隔10分钟开启一次温度传感器,传感器持续时间为1分钟。应该如何实现,大概的逻辑思路是怎样的

最佳答案

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

你这个思路不是挺清晰的么?去实现它就行了。 用定时器每秒中断一次,用于计时。 主程序判断这个秒变量,按时间开展工作,OK?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4521
金钱
4521
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-29 09:44:56 | 显示全部楼层
你这个思路不是挺清晰的么?去实现它就行了。
用定时器每秒中断一次,用于计时。
主程序判断这个秒变量,按时间开展工作,OK?
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

11

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2018-2-11
在线时间
24 小时
发表于 2018-7-29 10:37:09 | 显示全部楼层
定时,中断。
我现在卡在中断函数里了。
中断延时,结果出不来了
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4521
金钱
4521
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-29 11:00:33 | 显示全部楼层
MNK 发表于 2018-7-29 10:37
定时,中断。
我现在卡在中断函数里了。
中断延时,结果出不来了

中断里用什么延时,大忌
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

2

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2018-1-15
在线时间
13 小时
发表于 2018-7-29 23:25:48 | 显示全部楼层
2楼正解,用定时器搞。不过有个疑问,传感器持续时间为1分钟,单片机不做其他任务了????
回复

使用道具 举报

5

主题

69

帖子

0

精华

高级会员

Rank: 4

积分
567
金钱
567
注册时间
2017-5-30
在线时间
70 小时
发表于 2018-7-30 00:01:31 | 显示全部楼层
可以用定时器,定时1ms,然后加一个计数器,前9分钟啥也不干,下一分钟检测温度,然后计数器清零。
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-7-30 08:15:29 | 显示全部楼层
hougeqvjing 发表于 2018-7-29 23:25
2楼正解,用定时器搞。不过有个疑问,传感器持续时间为1分钟,单片机不做其他任务了????

while1里单片机先做其他任务,最后判断是否到10秒,若到则执行传感器测温,若没到则不执行
猪猪熊呢?
回复

使用道具 举报

20

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2015-11-28
在线时间
89 小时
发表于 2018-7-30 08:34:09 | 显示全部楼层
本帖最后由 森海有眼泉 于 2018-7-30 08:35 编辑

三种方法: 1:裸奔的.用tim定时器.1ms或者10ms(看你分频了) 中断一次.计数器加一.直到预定的值(10分钟), 然后执行你要的功能.2:操作系统的.   创建一个任务.在任务里的死循环里面延时10分钟.然后判断执行任务.
3:软件定时器. 设置10分钟执行一次.执行你要的功能,软件定时器优先级设置为最高
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-7-5
在线时间
4 小时
 楼主| 发表于 2018-7-30 15:35:52 | 显示全部楼层
warship 发表于 2018-7-29 10:13
你这个思路不是挺清晰的么?去实现它就行了。
用定时器每秒中断一次,用于计时。
主程序判断这个秒变量, ...

被你这么一点就懂了,之前卡在如何让传感器持续工作一分钟上。谢啦。
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-7-5
在线时间
4 小时
 楼主| 发表于 2018-7-30 15:38:34 | 显示全部楼层
森海有眼泉 发表于 2018-7-30 08:34
三种方法: 1:裸奔的.用tim定时器.1ms或者10ms(看你分频了) 中断一次.计数器加一.直到预定的值(10分钟), 然 ...

前两个都懂了,第三个是怎么弄的?
回复

使用道具 举报

20

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2015-11-28
在线时间
89 小时
发表于 2018-7-30 16:26:05 | 显示全部楼层
zzZ初 发表于 2018-7-30 15:38
前两个都懂了,第三个是怎么弄的?

都三个就是 操作系统里面的 软件定时器啊.TMR 这个东西. 在开始工作的时候 start tmr定时器,(定时器已经设置成为延时10分钟.)  然后tmr 的回调函数里面 写你要执行的程序.
就能 做到间隔10分钟(由tmr定时器决定) 执行功能(回调函数)/
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 22:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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