一、记录以下代码

准备电子设计大赛,浅浅的学习了MSP432的板载键盘模块模块,记录如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

//key.h
#ifndef _KEY_H_
#define _KEY_H_


#include "headfile.h"


//GPIO_PORT_P1,GPIO_PIN1表示P1.1引脚
//GPIO_getInputPinValue()函数读取电平状态
// KEY_LEFT_PRESS 1表示按键1被按下
#define KEY_LEFT_PORT GPIO_PORT_P1
#define KEY_LEFT_PIN GPIO_PIN1
#define KEY_LEFT GPIO_getInputPinValue(KEY_LEFT_PORT,KEY_LEFT_PIN)
#define KEY_LEFT_PRESS 1

#define KEY_RIGHT_PORT GPIO_PORT_P1
#define KEY_RIGHT_PIN GPIO_PIN4
#define KEY_RIGHT GPIO_getInputPinValue(KEY_RIGHT_PORT,KEY_RIGHT_PIN)
#define KEY_RIGHT_PRESS 2


//function
void Key_Init(void); //IO初始化
void Key_Int_Init(void);
uint8 Key_Scan(void); //按键扫描函数
void Key_Test(void);

#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//key.c
//板载按键P1.1 P1.4
#include "key.h"


//key pin init,根据电路,这里GPIO_setAsInputPinWithPullUpResistor()对应上拉输入
void Key_Init(void)
{
GPIO_setAsInputPinWithPullUpResistor(KEY_LEFT_PORT,KEY_LEFT_PIN);
GPIO_setAsInputPinWithPullUpResistor(KEY_RIGHT_PORT,KEY_RIGHT_PIN);
}

//key int init
void Key_Int_Init(void)
{
//配置引脚
GPIO_setAsInputPinWithPullUpResistor(KEY_LEFT_PORT,KEY_LEFT_PIN);
//配置中断
GPIO_clearInterruptFlag(KEY_LEFT_PORT, KEY_LEFT_PIN);
GPIO_enableInterrupt(KEY_LEFT_PORT, KEY_LEFT_PIN);
Interrupt_enableInterrupt(INT_PORT1);
//使能sram bank 低功耗 开不开都行
SysCtl_enableSRAMBankRetention(SYSCTL_SRAM_BANK1);
//使能中断控制器
Interrupt_enableMaster();
}


//simple key scan,二次判断加延时消抖
uint8 Key_Scan(void)
{
if(KEY_LEFT == 0) //KEY_LEFT是按键1的电平状态,只能是0或者1
{
delay_ms(5);
if(KEY_LEFT == 0)
return KEY_LEFT_PRESS; //返回KEY_LEFT_PRESS表示按键1被按下
}
else if(KEY_RIGHT == 0)
{
delay_ms(5);
if(KEY_RIGHT == 0)
return KEY_RIGHT_PRESS;
}
return 0;
}


//test,按下按键1灯亮,按下按键2灯灭
void Key_Test(void)
{
if(Key_Scan() == KEY_LEFT_PRESS)
{
LED_ON;
}
if(Key_Scan() == KEY_RIGHT_PRESS)
{
LED_OFF;
}
}