目录
前言
按键扫描尽量不要使用外部中断去检测,最大的问题就是消抖,我们不能在任何中断函数里写延迟函数,如果你在中断函数里面写延迟函数,最后会进入一个错误函数里不断循环。
1.stm32cubemx设置
设置外部高速时钟为系统时钟
设置系统时钟
打开后找到中断函数并找到函数所在的位置
我们需要在main.c下在再次定义中断回调函数
2.代码实现
主要使用的函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//中断回调函数
//我们只需要在这个函数里判断中断函数里返回的参数值
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch(GPIO_Pin)
{
case GPIO_PIN_0:
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
break;
case GPIO_PIN_1:
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
break;
case GPIO_PIN_2:
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10|GPIO_PIN_11);
break;
}
}
这里只是列举了其中的一种方法,也可以使用其他的判断语句。