OpenEdv-开源电子网

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

请教一个通用定时器的问题

[复制链接]

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
发表于 2018-3-2 09:13:32 | 显示全部楼层 |阅读模式
要求:如果5min内没有按键按下,设备自动断电。

思路:我的想法是开一个定时器中断,计时5min后自动控制电源板掉电。
问题:那如果有按键按下,怎么让定时器能从头再开始计数?

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

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-3-2 09:47:52 | 显示全部楼层
这还不简单。方法多得是。
一种方法是,定时器10ms检测一次按键,累积到5min的次数,就关机。而一旦检测到按键按下,清除累积量为0;
你说的:定时器从头再开始计数,这个更简单,直接修改寄存器CNT值为初始值。
回复 支持 1 反对 0

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2013-10-16
在线时间
28 小时
发表于 2018-3-2 09:15:42 | 显示全部楼层
在定时器中断里做变量计数。
回复 支持 反对

使用道具 举报

4

主题

116

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4074
金钱
4074
注册时间
2017-11-15
在线时间
331 小时
发表于 2018-3-2 09:53:30 | 显示全部楼层
[mw_shl_code=c,true]unsigned int time;


void timer_inttrupt_process(void)
{
        if(time)
        {
                time --;
                if(time <1)
                {
                        // 掉电               
                }
        }
}

void readkey(void)
{
        time = 300;        // 有按键就重新倒计时
}[/mw_shl_code]
www.littlebutler.top
回复 支持 反对

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2018-3-2 10:05:26 | 显示全部楼层
林光华ing 发表于 2018-3-2 09:47
这还不简单。方法多得是。
一种方法是,定时器10ms检测一次按键,累积到5min的次数,就关机。而一旦检测到 ...

感谢大佬。 TIM_SetCounter(TIMx,0);//清空定时器的 CNT
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-3-8
在线时间
5 小时
发表于 2018-3-8 16:48:33 | 显示全部楼层
有按键按下TIM-CNT清零
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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