- 四.国民技术MCU开发之 GPIO模块--按键KEY例子
- 1.相关开发环境
- 2.按键KEY 的GPIO的相关硬件配置
- 3.GPIO CLK时钟使能配置以及KEY 初始化的相关代码
- 4.轮询法获取按键状态的相关测试代码
硬件版本:N32G457QEL_EVB V1.1
软件SDK版本 Nationstech.N32G45x_Library.1.1.1
开发软件:KEIL
2.按键KEY 的GPIO的相关硬件配置//key pa0
#define KEY_INPUT_PORT GPIOA
#define KEY_INPUT_PIN GPIO_PIN_0
KeyInputInit(KEY_INPUT_PORT, KEY_INPUT_PIN);
void KeyInputInit(GPIO_Module* GPIOx, uint16_t Pin)
{
GPIO_InitType GPIO_InitStructure;
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
if (GPIOx == GPIOA)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
}
else if (GPIOx == GPIOB)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
}
else if (GPIOx == GPIOC)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOC, ENABLE);
}
else if (GPIOx == GPIOD)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOD, ENABLE);
}
else if (GPIOx == GPIOE)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE);
}
else if (GPIOx == GPIOF)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOF, ENABLE);
}
else
{
if (GPIOx == GPIOG)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOG, ENABLE);
}
}
if (Pin <= GPIO_PIN_ALL)
{
GPIO_InitStructure.Pin = Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitPeripheral(GPIOx, &GPIO_InitStructure);
}
}
4.轮询法获取按键状态的相关测试代码
// while(1)
{
if (GPIO_ReadInputDataBit(KEY_INPUT_PORT, KEY_INPUT_PIN) == Bit_RESET)
{
printf("key no pressed=%drn",get_curtime());
}
else
{
printf("key pressed=%drn",get_curtime());
}
Delay_ms(1000);
}
else
{
printf("key pressed=%drn",get_curtime());
}
Delay_ms(1000);
}
#



