GPIO_Pin
在LL库里是 32
位的,而在HAL库和SPL库均是 16
位的1
2
3
#define KEY_ON 1
#define KEY_OFF 0
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
* 函数名:Key_Scan
* 描述 :检测是否有按键按下
* 输入 :GPIOx:x A,B,C,D,E
* GPIO_Pin:待读取的端口位
* 输出 :KEY_OFF(没按下)、KEY_ON(按下)
*/
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)
{
/*是否有按键按下 */
if(LL_GPIO_IsInputPinSet(GPIOx,GPIO_Pin) == KEY_ON )
{
/*等待按键释放 */
while(LL_GPIO_IsInputPinSet(GPIOx,GPIO_Pin) == KEY_ON);
return KEY_ON;
}
else
return KEY_OFF;
}
1
2
3
4
5
6
7
8
9
10
if( Key_Scan(KEY1_GPIO_Port,KEY1_Pin) == KEY_ON )
{
/*LED1反转*/
LED1_TOGGLE;
}
if( Key_Scan(KEY2_GPIO_Port,KEY2_Pin) == KEY_ON )
{
LED2_TOGGLE;
}