找回密码
 注册
关于网站域名变更的通知
查看: 812|回复: 8
打印 上一主题 下一主题

单片机按键 长按开机 和 长按关机?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-21 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如何使用单独按键  长按开机  长按关机
3 B; R  {. v4 c9 k& |. _2 U& E长按开机是用外部中断唤醒
* I" e0 o% ^+ e  \- E, R如何在按键按下进入外部中断得时候 到2秒才执行唤醒求大佬给一些代码看看,这个卡了一天时间了,

该用户从未签到

2#
发表于 2020-7-21 10:31 | 只看该作者
用代码进行条件延迟  延迟3s 即可
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-7-21 10:33 | 只看该作者
    + j3 {. U, q' A! r1 \8 f3 C
    if(按下): H/ B8 _+ S1 Q% `* S, Q
    {    if(按下未松开标志位 == 0)//松开后再进行第二次计数7 `  Y( ?! [2 M) {+ w6 A1 m
        {8 s& r! S* l! O% S
            计数++;        if(计数 >= 2s)//2s后确认为按下, b. d, }6 e# u
            {6 c5 }9 \. w+ u0 l6 u. L; R- Z5 r
                计数 = 0;
    5 e+ x" D+ @$ ]& ~; G6 f            按下未松开标志位 = 1;//
    , S1 l& G0 M/ I/ |: B7 V; k& \            //要执行的代码
    # L8 ?& s: C9 s4 w1 l            //要执行的代码+ E* a# i% {# `  k
                //要执行的代码0 P" C$ t. p# v0 \
                //要执行的代码
    7 j4 O% N8 {( c) Q        }3 O. D8 T/ O# p6 T
        }
    9 p( A! X9 B1 ?1 K: F}# {% H/ J1 x  d& N
    else//松开或按下未到2s松开- z# Y) X9 Y7 G& ?
    {
    5 t) {' N! I5 H! C9 J8 c0 V    计数 = 0;//松开就清零
    & ], l* X( z, B$ Q# U    按下未松开标志位 = 1;$ I$ t' z9 U' U' k# a$ |
    }

    该用户从未签到

    4#
    发表于 2020-7-21 10:41 | 只看该作者
    ; o! r% v% G" I0 B% |
    我有汇编的,你要不?1 J! V( o& f$ m0 L$ o; l' C
    原理是差不多的:) h3 Q9 c$ b9 e' R
    1:先设定关闭外部中断唤醒
    . Q3 `$ G( f) Z( b2:在开机状态下按下按键就开始查询时间,时间到了还没有松开就关机,时间没有到就松开,就什么也不做8 X" C! Q7 W1 R) _) e
    3:关机之前开启外部中断唤醒,然后再进入掉电模式* e5 F1 c5 j# w6 f' u% j
    4:按键按下就进入中断并唤醒,查询时间,时间到了还没有松开就开机,时间没有到就松开的,退出中断之后再次进入掉电模式
    - e9 m# i! \. A( a  }4 G

    点评

    谢谢,我不会汇编,我要C语言的  详情 回复 发表于 2020-7-22 09:32

    该用户从未签到

    5#
    发表于 2020-7-21 13:17 | 只看该作者
    Heaven_1 发表于 2020-07-21 10:33:34
    6 |- ^2 S# k" k/ W  G  |7 t% d+ v# R
    . \. d, n5 @$ Uif(按下)) p' ^4 e( S  k5 c( J( s5 l
    {    if(按下未松开标志位 == 0)//松开后再进行第二次计数4 {! ?6 E2 }2 x* Y7 }. o
        {/ I& [3 n: q. T7 s' j
            计数++;        if(计数 >= 2s)//2s后确认为按下
    ' m8 e4 u7 F  O4 h$ o. ~        {, v( o+ W% f" F$ J
                计数 = 0;# o: }8 h: E! H2 v6 ?
                按下未松开标志位 = 1;//. K/ K1 T8 G9 S! a, k
                //要执行的代码
    1 B6 I' Q. u$ h/ U% \) X            //要执行的代码
    6 w, z( q0 I* V( ~+ O% L+ K3 H8 E            //要执行的代码
    6 T% B" [. ~9 e- B/ L            //要执行的代码
    8 _- t( a) U" \6 j        }2 T2 O. ^: l. q6 U" x& O! O
        }
    3 S0 d+ L, s; k; I' K}
    $ A) E# }, d) j: }/ F2 L1 l( relse//松开或按下未到2s松开* d# k5 ?7 F' f- w- J
    {
    ( f9 j% ]4 C! A1 q4 t) |2 n& p    计数 = 0;//松开就清零0 h) _  B+ J& h& X, ^8 n
        按下未松开标志位 = 1;
      ]1 m. y. G; v) `}
    ' K6 n! \! I* Y- g
    7 Z1 R9 I# Q+ K" H
    详细
    * p' ~  B. ~1 i5 K. J( Y

    “来自电巢APP”

    该用户从未签到

    6#
     楼主| 发表于 2020-7-22 09:32 | 只看该作者
    Storm_change 发表于 2020-7-21 10:412 f# w4 ~* E- T$ N
    我有汇编的,你要不?* e; O8 [" Y$ ]% `0 ^2 m" i
    原理是差不多的:2 |0 s2 r: ?- v# V* C' L1 k6 n' W
    1:先设定关闭外部中断唤醒
    9 h& x# ]2 {  A* e# S) t
    谢谢,我不会汇编,我要C语言的
    ; N& z: v0 G2 i  b8 K4 k  a

    该用户从未签到

    7#
    发表于 2020-7-22 09:32 | 只看该作者
    while(Key==0)
    7 ]. y9 J) F: j) H6 h# o{5 K' K7 u6 t: J4 k* b
    delay(100);
      p3 g1 L- [" rtime=time+100;
    ( p7 @7 C3 f$ o" z1 c8 U" v, @" E}. N7 g/ i7 ~4 k4 X" T$ l  |
    if(time>=2000)执行对应操作;
    5 x) E, t3 t5 J' Q6 u2 G  \7 ytime=0;
  • TA的每日心情
    无聊
    2024-1-31 15:19
  • 签到天数: 141 天

    [LV.7]常住居民III

    8#
    发表于 2020-8-19 15:18 | 只看该作者
    可以参考正点原子STM32的待机唤醒实验,例程就是3秒开机,3秒关机
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-20 23:11 , Processed in 0.125000 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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