野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11698|回复: 5

关于按键中断的问题

[复制链接]
发表于 2017-9-4 16:23:27 | 显示全部楼层 |阅读模式
本帖最后由 jiemorang 于 2017-9-4 16:27 编辑
  1. #include "stm32f10x_it.h"
  2. #include "bsp_led.h"
  3. #include "bsp_exti.h"
  4. extern char i;

  5. //中断服务函数
  6. void KEY1_IRQHandler(void)
  7. {
  8.         if(EXTI_GetITStatus(KEY1_INT_EXTI_LINE) != RESET)
  9.         {
  10.                 switch(i)
  11.                 {
  12.                         case 0:   LED_RED;     break;   //红
  13.                         case 1:   LED_GREEN;   break;    //绿
  14.                         case 2:   LED_BLUE;    break;   //蓝
  15.                         case 3:   LED_YELLOW;  break;     //黄(红+绿)
  16.                         case 4:   LED_PURPLE;  break;     //紫(红+蓝)
  17.                         case 5:   LED_CYAN;    break;   //青(绿+蓝)
  18.                         case 6:   LED_WHITE;   break;    //白(红+绿+蓝)
  19.                     default:  LED_RGBOFF;  break;    //黑(全部关闭)
  20.                 }
  21.                 i=(i++)%7;
  22.                 EXTI_ClearITPendingBit(KEY1_INT_EXTI_LINE);     
  23.         }  
  24. }
复制代码

我想实现按一次按键1,LED灯换一种颜色,可是通过实验这段函数只能亮红灯,再按key1就没有反应了!想问一下到底是哪里写错了。
其中i定义在main.c文件中了,其他的初始化函数直接用的火哥的历程,按一下led翻转一次没有问题。
回复

使用道具 举报

发表于 2017-9-4 16:29:43 | 显示全部楼层
把 变量 i 的值打印出来看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-4 19:56:28 | 显示全部楼层
flyleaf 发表于 2017-9-4 16:29
把 变量 i 的值打印出来看看

我用串口打印出来后发现i=(i++)%7的时候,打印出来i全是为0,我把这就话改成i=(i+1)%7后就正常了!!!不明白是什么原因!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-4 19:58:43 | 显示全部楼层
flyleaf 发表于 2017-9-4 16:29
把 变量 i 的值打印出来看看

改为i=(++i)%7也可以!!!
回复 支持 反对

使用道具 举报

发表于 2017-9-5 08:59:11 | 显示全部楼层
jiemorang 发表于 2017-9-4 19:58
改为i=(++i)%7也可以!!!

就是使用前加1和使用后加1的区别
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-5 11:25:03 | 显示全部楼层
flyleaf 发表于 2017-9-5 08:59
就是使用前加1和使用后加1的区别

奥奥!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 18:44 , Processed in 0.093117 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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