学习完IO口的输出,学习输入应该是惯例了,上次的教程没有写明(貌似)使用了MX后会调用一个新的库,笔者用了新的库,里面感觉还不错,还提供了回调接口,从官网下载了新库的手册,不过暂时只有英文的。
下面开始配置中断,Discovery板子的按键是PA0的,这个符合ST官网的一概风格,结合唤醒和普通按键。
首先,我们继续新建一个工程

同时配置好时钟和调试模式,然后配置PA0

在这里我们配置为中断模式

上一次的时钟是直接使用8M晶振的,这次我们把它倍频到84mhz
这里有个小窍门,不知道对不对,就是直接在这里输入84

cube就会自动帮你配置好时钟
然后将引脚配置一下

接着,配置中断

关于NVIC级别的问题,我觉得原子原来的教程里面讲的是非常不错的,个人理解应该是抢占优先级为主,相同的时候看次占优先级,越低越好,这里如果不开中断一定是进不去的,切记!
接着生成代码
然后我们打开工程,关于中断的配置,新的HAL库,需要使用一种回调接口来做,笔者参考了官方cube论坛里面一个朋友的做法,新建了中断函数的文件,然后在gpio.c文件里面调用。

自己写的如下

没有写按键消抖,所以肯定是会有点小毛病的,大家自己来吧~~~
下一篇是串口,这几章其实写的很简略,因为感觉cube的重点是生成一些FATFS,FREERTOS以及CAN,USB这一类代码时减轻工作量提升效率,所以前几张内容缩减了。