一、cubemx配置
1.根据板子的原理图找到相应引脚,配置成GPIO_EXT模式
2.在左边栏找到GPIO,在中间栏下部分设置上升沿或下降沿触发
因为我这板子的按键是,按下之后接地,不按时是高电平,所以我设置它上拉,下降沿触发。
3.把中间栏切换到NVIC,勾选Enabled!!!!(根据实际情况设置优先级)
二、代码
将以下代码复制到main.c或者it.c中,改一改引脚就可以用啦
重中之重,中断里不要加延时!!!
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//回调函数
{
//中断不要加延时,延时就错了!!!!
if(GPIO_Pin==GPIO_PIN_4)
{
for(int i;i<1000;i++);//消抖,有些人用HAL_Delay消抖,根本没法用,按键不起作用
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
{
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0);
}//实现led翻转
}
}