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

为什么这样写LED死活点不亮?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-28 13:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 longzhiming99 于 2019-11-28 13:54 编辑
( r( ]3 X! O2 }, `; L1 r* p* H, B) v8 {: ?  ?
为什么return不过去呢?研究了一个多星期了。编译没有任何警告与错误,是哪里不对啊?; O0 q3 s5 _! O. M3 b& g4 {" @
9 n. P5 z; Z/ E7 e* o) d
. }% N) o/ g9 u, `4 G

该用户从未签到

3#
发表于 2019-11-28 15:31 | 只看该作者
本帖最后由 行者~ABC 于 2019-11-28 15:32 编辑
+ [8 Q4 q, h' o0 [" e! ~* ?: c2 S# l
- W1 }3 Q( ?, n4 l/ ~  {( @上电的时候,如果两个按键都是高电平的时候,K的值不是1也不是2。进入while(1)里面。不会检测到按键,所以LED不会再变化+ c0 E0 v, b1 ~
  • TA的每日心情
    开心
    2019-11-19 16:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2019-11-28 15:41 | 只看该作者
    工程配置有问题,贴一下你的工程
  • TA的每日心情
    开心
    2019-11-19 16:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2019-11-28 15:56 | 只看该作者
    本帖最后由 harry-iot 于 2019-11-28 16:08 编辑 : V9 S# i& _9 D, ?' t! h8 }

    4 C2 C" y7 {6 a1 B4 ]' z仅仅从贴出的图片看,key1按下,LED1灯亮;按键的GPIO口配置的是中断还是查询方式,还要注意io口的定义,下面是一种按键中断的处理,供参考:
    + ~4 p  b6 v( A8 w) c- u( R8 q" s0 c( f
    " b$ \6 U. ?4 N$ n- \/ u四个按键PIN脚定义
    % k) t( n' f* u, ~3 t#define KEY1_Pin GPIO_PIN_0
    0 ~  B, J  N7 d2 ?#define KEY1_GPIO_Port GPIOC
    ) n) e% V( @0 a2 j/ L" `#define KEY1_EXTI_IRQn EXTI0_IRQn( X. b& E/ ~: |8 s
    #define KEY2_Pin GPIO_PIN_1( y# u) }/ v5 g# [
    #define KEY2_GPIO_Port GPIOC' }. T5 \  E& X) Y+ g; e
    #define KEY2_EXTI_IRQn EXTI1_IRQn
      j: G: u+ F  Q& M, {- D8 S#define KEY3_Pin GPIO_PIN_2  U1 g4 D  j: X* c: b  e
    #define KEY3_GPIO_Port GPIOC
    4 Y7 K! _) w$ \6 f3 m; \8 J: t8 H) v#define KEY3_EXTI_IRQn EXTI2_IRQn
    $ [! H; s. z9 b% Z5 K' O#define KEY4_Pin GPIO_PIN_3
    3 i* c/ I7 m  b7 a) e#define KEY4_GPIO_Port GPIOC
    $ y$ O: n! `  P5 |8 T2 s. [+ h; D#define KEY4_EXTI_IRQn EXTI3_IRQn! r- H0 y# ]( y% A- D1 }

    * ~2 ?$ [- w; A0 }& i9 o" h; y中断回调
    4 T* ~1 H, P9 `: n$ d1 gvoid HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    2 o3 m. @# m/ p& f{
    ! M! |0 }9 M# q- p% J switch(GPIO_Pin)2 {% n8 U' U# W  |, x
    {' Q: \. A4 A) T1 u* ]
      case KEY1_Pin: keyValue = KEY1_VALUE;
    . {2 y# }/ T' K6 }7 u* p, p0 q2 L0 N   break;& o' _) |0 A6 \/ I8 T* Z
      case KEY2_Pin: keyValue = KEY2_VALUE;' |& `) N  b# j9 t' ]- S
       break;
    : f6 k: S( ^5 O8 v: P" }( U  case KEY3_Pin: keyValue = KEY3_VALUE;$ J" _4 I) T( y7 b% j/ i3 d! B
       break;
    - r0 [$ z- b+ \$ Q  case KEY4_Pin: keyValue = KEY4_VALUE;
    ' \9 W7 ]' F* N' r" A4 y: Z5 Q   break;  }4 p2 s8 Q0 [; i
      default:  keyValue = KEY_VALUE_NONE;
    + F5 S4 R! u& D$ e/ Z   break;
    ' D& g1 f! D1 P& Y; g5 _ }; [/ j/ O% i0 u# f( H
    }* K5 H  s# ~% H3 k9 s( Z

      f5 A2 c& |1 m按键扫描! L* g, k' v4 m5 z3 C/ _
    uint8_t KeyScan(void). @* q, }& l$ E% T
    {
    # u4 m5 r! H& r* H& {5 ^ if(KEY1==0||KEY2==0||KEY3==0||KEY4==0)
    $ n3 m" D+ {4 X  g. M* c9 R {% Q8 b6 w% Z$ u, `; z- M
      HAL_Delay(10);      3 G) m% o) g9 J: K: F; A
      if   (KEY1==0)
    0 E9 [: ?  h: b   return KEY1_VALUE;* @, u0 m) D* I, z0 |
      else if(KEY2==0); {  J, g/ m: q8 r
       return KEY2_VALUE;
    ( Y: x6 ~1 L8 a/ i+ H  else if(KEY3==0)
    , v5 m1 h( m! k& _   return KEY3_VALUE;
    0 F3 e8 |8 _9 y' w! _9 s( B# B  else if(KEY4==0)
    - g2 l6 Q' J3 f- ?% b6 i   return KEY4_VALUE;
    2 R& F' D# p2 r5 @7 C }
    4 `* j  `) M$ x* \ return KEY_VALUE_NONE;
    ; i3 m2 B3 P1 ^2 Q7 l8 a6 z% m1 t}; u: {1 I" ~% ~
      y3 q1 R5 {2 G. m, o, L$ z3 g( I6 \
    2 k7 k+ M1 h& L, j- ?/ q+ _+ e5 ^! t
  • TA的每日心情
    开心
    2020-12-3 15:53
  • 签到天数: 38 天

    [LV.5]常住居民I

    7#
    发表于 2019-11-28 16:50 | 只看该作者
    学习一下         

    该用户从未签到

    8#
    发表于 2019-11-28 17:54 | 只看该作者
    把“ k = keyscan();” 这一行挪到while(1)后面的{}里面去。

    该用户从未签到

    9#
    发表于 2019-11-29 08:55 | 只看该作者
    掌握一种好的方法,对你学习单片机系统开发更有益,请参见:
    “从0开始,10分钟点亮LED灯”不是神话!

    ( z, h' R* Z" r0 m+ e7 x- g

    该用户从未签到

    10#
     楼主| 发表于 2019-11-29 09:10 | 只看该作者
    leileigaga 发表于 2019-11-28 17:54
    : b( ]% R8 @4 i0 e0 e8 u+ L把“ k = keyscan();” 这一行挪到while(1)后面的{}里面去。

    - J* ~# I8 ]6 D" ? 是的,是这个问题,谢谢
    0 {& N0 g, v3 }7 _4 X8 B

    该用户从未签到

    11#
     楼主| 发表于 2019-11-29 09:11 | 只看该作者
    jacky401 发表于 2019-11-29 08:557 S, d+ m. e  m6 Y+ c
    掌握一种好的方法,对你学习单片机系统开发更有益,请参见:“从0开始,10分钟点亮LED灯”不是神话!
      A0 q  o/ p9 Y" b5 W
    好的,非常感谢5 G8 {' @4 f0 I8 S  X3 [' }
  • TA的每日心情
    无聊
    2024-1-31 15:19
  • 签到天数: 141 天

    [LV.7]常住居民III

    15#
    发表于 2020-8-29 09:07 | 只看该作者
    第一,主程序里边keyscan没放到死循环里边,他只执行一次;第二,keyscan里边的两个while让程序停在那里死循环了,走不到return语句。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-20 16:33 , Processed in 0.125000 second(s), 29 queries , Gzip On.

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

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

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