STM32底层LL库GPIO使用输入LL篇2

Posted:   2020-08-20

Status:   Completed

Tags :   STM32 CUBE LL GPIO

Categories :   STM32 CUBE LL GPIO

Previous:   STM32底层LL库GPIO输出LL篇1

Next:   STM32底层LL库串口通信LL篇3


配置工程

  • 与HAL库操作方式一样
  • 生成代码

按键函数

添加按键宏和声明函数

  • 有一点要注意GPIO_PinLL库里是 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;
}

下载调试

  • 编译并下载到开发板
  • 点击按键1,LED1进行反转输出
  • 点击按键2,LED2进行反转输出
  • 结果和HAL库写的程序输出效果一致