java控制stm32里按键_STM32按键控制程序

1 /******************************************************************************2 * 文件 Key.c3 * 作者 Belye4 * 版本 ST V3.5.05 * 日期 04-February-20166 * 提要 基于德飞莱开发板的四个按键的底层驱动程序7 * 使用方式 函数调用示例8 * 注意 记得修改对应的按键初始化管脚9 ******************************************************************************/

10

11 /*************************************** 函数调用示例 ************************************12 KEY_Init();13 while(1)14 {15 i=KEY_Scan(0);16 switch (i)17 {18 case S4_PRES:19 break;20 case S1_PRES:21 break;22 case S2_PRES:23 break;24 case S3_PRES:25 break;26 default:27 break;28 }29 }30 **********************************************************************************************/

31 #include

32 #include

33

34 voidKEY_Init()35 {36 S4_Init();37 S1_Init();38 S2_Init();39 S3_Init();40 }41

42

43 void S4_Init(void)//PA0

44 {45

46 GPIO_InitTypeDef GPIO_InitStructure;47

48 RCC_APB2PeriphClockCmd(S4_CLK,ENABLE);//使能PORTA时钟49

50 //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试

51

52 GPIO_InitStructure.GPIO_Pin = S4_PIN;//PA8

53 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成下拉输入

54 GPIO_Init(S4_PORT, &GPIO_InitStructure);//初始化GPIOA8

55

56 }57

58 void S1_Init(void)59 {60

61 GPIO_InitTypeDef GPIO_InitStructure;62

63 RCC_APB2PeriphClockCmd(S1_CLK,ENABLE);//使能PORTA时钟64

65 //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试

66

67 GPIO_InitStructure.GPIO_Pin = S1_PIN;//PA8

68 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入

69 GPIO_Init(S1_PORT, &GPIO_InitStructure);//初始化GPIOA8

70

71 }72

73 void S2_Init(void)74 {75

76 GPIO_InitTypeDef GPIO_InitStructure;77

78 RCC_APB2PeriphClockCmd(S2_CLK,ENABLE);//使能PORTD时钟79

80 //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试

81

82 GPIO_InitStructure.GPIO_Pin = S2_PIN;//PD3

83 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入

84 GPIO_Init(S2_PORT, &GPIO_InitStructure);//初始化GPIOD3

85

86 }87

88

89

90 void S3_Init(void)91 {92

93 GPIO_InitTypeDef GPIO_InitStructure;94

95 RCC_APB2PeriphClockCmd(S3_CLK,ENABLE);//使能PORTD时钟96

97 //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试

98

99 GPIO_InitStructure.GPIO_Pin = S3_PIN;//PD3

100 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入

101 GPIO_Init(S3_PORT, &GPIO_InitStructure);//初始化GPIOD3

102

103 }104

105

106

107

108 //按键处理函数109 //返回按键值110 //mode:0,不支持连续按;1,支持连续按;111 //返回值:112 //0,没有任何按键按下113 //KEY0_PRES,KEY0按下114 //KEY1_PRES,KEY1按下115 //WKUP_PRES,WK_UP按下116 //注意此函数有响应优先级,KEY0>KEY1>WK_UP!!

117 u8 KEY_Scan(u8 mode)118 {119 static u8 key_up=1;//按键按松开标志

120 if(mode)key_up=1; //支持连按

121 if(key_up&&(S4==1||S1==0||S2==0||S3==0))122 {123 delay_ms(10);//去抖动

124 key_up=0;125 if(S4==1) returnS4_PRES;126 else if(S1==0) returnS1_PRES;127 else if(S2==0) returnS2_PRES;128 else if(S3==0) returnS3_PRES;129 }else if(S4==0&&S1==1&&S2==1&&S3==1)key_up=1;130 return 0;//无按键按下

131 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值