前言:之前的STM32L433CB单片机还有几个模块没有解决,最佳抽空把按键模块和PWM蜂鸣器模块调通了。
1.按键模块
按键模块重点是需要了解中断模式:
(1)中断简而言之是暂时中止当前的工作,而去处理更为急需处理的事情,把急需处理的事情处理完毕之后,再回头来继续原来的事情。
(2)stm32的中断分为抢占优先级和响应优先级。抢占优先级高的中断,可以打断抢占优先级低的中断。抢占优先级相同的中断,响应优先级高的可以优先执行。
(3)中断向量表:中断向量是中断服务程序的入口地址,在计算机中中断向量的地址存放一条跳转到中断服务程序的跳转指令。中断地址是存储中断向量的内存单元。中断向量表是用来存放中断向量
(4)嵌套中断:中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。如果中断里调用HAL_Delay就会停在那里,因为根本不会进入那个级别更低的中断。CUBE生成的程序中, SysTick是中断型延时,SysTick是内核中断,优先级别默认最低。所以我后面的延时函数使用了SysTick。
了解中断之后就是STM32中的按键:
按键需要上拉电阻,当按键按下接地,低电平导通,CPU读取低电平
配置方法
使按键对应的PC13和PA15为GPIO模式,勾上修改,将GPIO mode 设置为下降沿触发中断,设置电阻为上拉电阻。
使能按键中断,两个按键中断优先级是一样的