按键中断:::一下去就是下降为低电平 看看蓝牙上拉
PART1:
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;//GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLUP;//GPIO_NOPULL;
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
PART2:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{/*中断线 已经过来*/
uint8_t status=0;
uint8_t *ask=NULL;
HAL_Delay(10);/*延时 消抖*/
status=HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin);
if(status)/*再去读是1 就是高电平 那就是无效的*/
{
ask=(uint8_t*)"NORMAL";
}
else/*再去读是0 就是低电平 那就是有效的按键触发*/
{
ask=(uint8_t*)"BUTTON";
}
HAL_UART_Transmit(&huart1, ask, 6, 0xFFFF);
}
按键轮训::
PART1:
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
PART2:
void KEY_Test(void)
{
uint8_t status=HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin);//没有按下是1 按下就是0
if(status)
{
HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin,GPIO_PIN_RESET);//不叫
}
else
{
HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin,GPIO_PIN_SET);//叫
}
}