70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
/**
|
||
******************************************************************
|
||
* @file bsp_key.c
|
||
* @author fire
|
||
* @version V1.0
|
||
* @date 2015-xx-xx
|
||
* @brief 按键应用bsp(扫描模式)
|
||
******************************************************************
|
||
* @attention
|
||
*
|
||
* 实验平台:野火 STM32H750 开发板
|
||
* 论坛 :http://www.firebbs.cn
|
||
* 淘宝 :http://firestm32.taobao.com
|
||
*
|
||
******************************************************************
|
||
*/
|
||
#include "./key/bsp_key.h"
|
||
|
||
/**
|
||
* @brief 配置按键用到的I/O口
|
||
* @param 无
|
||
* @retval 无
|
||
*/
|
||
void Key_GPIO_Config(void)
|
||
{
|
||
|
||
GPIO_InitTypeDef GPIO_InitStructure;
|
||
/*开启按键GPIO口的时钟*/
|
||
KEY1_GPIO_CLK_ENABLE();
|
||
KEY2_GPIO_CLK_ENABLE();
|
||
/*选择按键的引脚*/
|
||
GPIO_InitStructure.Pin = KEY1_PIN;
|
||
/*设置引脚为输入模式*/
|
||
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
|
||
/*设置引脚不上拉也不下拉*/
|
||
GPIO_InitStructure.Pull = GPIO_NOPULL;
|
||
/*使用上面的结构体初始化按键*/
|
||
HAL_GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);
|
||
/*选择按键的引脚*/
|
||
GPIO_InitStructure.Pin = KEY2_PIN;
|
||
/*使用上面的结构体初始化按键*/
|
||
HAL_GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);
|
||
}
|
||
|
||
/**
|
||
* @brief 检测是否有按键按下
|
||
* @param 具体的端口和端口位
|
||
* @arg GPIOx: x可以是(A...G)
|
||
* @arg GPIO_PIN 可以是GPIO_PIN_x(x可以是1...16)
|
||
* @retval 按键的状态
|
||
* @arg KEY_ON:按键按下
|
||
* @arg KEY_OFF:按键没按下
|
||
*/
|
||
|
||
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
|
||
|
||
{
|
||
|
||
/*检测是否有按键按下 */
|
||
if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON )
|
||
{
|
||
/*等待按键释放 */
|
||
while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON);
|
||
return KEY_ON;
|
||
}
|
||
else
|
||
return KEY_OFF;
|
||
}
|
||
/****************************END OF FILE**************************/
|