江科大自化协标准库改为HAL库 例程3:按键外部中断(四脚按键改为两脚)
-
第一步:分别配置GPIO,RCC,SYS,时钟树(省略)
-
第二步 改造按键 视频中使用的两脚按键
把四脚的剪断两个对角(按下按键为对角电路联通)
-
中断设置
外部中断EXTI(External interrupt/event controller)特指的是,在中断向量表中的EXTI的外部中断,STM32的每个IO都可以作为外部中断输入。
此时设置中断时,阅读原理图可以看到0号口共用一个数据选择器,设置PA0后不可再用PB0!
设置完中断系统后,去it_c中找Handler函数,找到中断响应函数,重写响应函数,可以让指定的IO口收到中断指令后有对应的动作响应
uint16_t CountSensor_Count = 0;
uint16_t CountSensor_Get()
{
return CountSensor_Count;
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
{
//按下按键后计数器+1
//可以在此处加for循环按键去抖,但是不要用HAL的延时函数
if(GPIO_Pin == GPIO_PIN_0){
CountSensor_Count ++;
}
}
int main(void)
{
while (1)
{
/* USER CODE END WHILE */
OLED_ShowNum(1, 7, CountSensor_Get(), 5);
}
/* USER CODE BEGIN 3 */
}
实验效果为按键后OLED屏幕计数器+1
按键存在抖动效果,但是不要盲目在中断返回函数中增加HAL库的delay函数!!!!!
按键存在抖动效果,但是不要盲目在中断返回函数中增加HAL库的delay函数!!!!!
按键存在抖动效果,但是不要盲目在中断返回函数中增加HAL库的delay函数!!!!!
会出不来,没响应,可以用多个for循环去抖动
参考文章:小蜜蜂老师Cubemx教学