我们在cubemx上首先配置我们需要的设置,首先对hse高速时钟配置为晶振/陶瓷发生震荡模式
然后再对我们的debug配置为serial wire, 这里出现了system wake up的红字提醒,不太清楚为什么。
然后再配置我们需要的引脚
PB0与PB1,PB5配置为推挽输出模式,用来控制小灯的亮灭,低电平点亮。
PA0与PC13配置为EXTI模式,原理图中,PA0和PC13分别连接了两个按键key1与key2,当有按键按下时,PA0或PC13电平发生变化,中断事件发生。
既然配置了外部中断我们就要再NVIC处配置我们的中断,我偶们选择了分组5,把两个外部中断的优先级配置为抢占优先级7级。
接下来配置时钟
直接把速度拉满就行了,这里做大72MHZ,那我们就拉到这么多。
然后继续配置一些杂项
这里取一个项目名称,别忘了选择MDK-ARM选项
这里我们选择只拷贝部分必要库和生成外设初始化文件,
就可以生成代码啦
第一行代码是自动生成的,其作用是用来检测是否是这个引脚引起的中断,因为从10到15引脚共用了一个中断句柄(中断服务函数),所以我们必须检测是否是我们需要的引脚引起的,然后用的是hal库的IRQHandler函数,一个引脚号参数,然后我们这里用了对gpio操作的写函数,对GPIOB进行置0操作(点亮led灯), 这个函数需要三个参数,第一个是GPIO*参数,第二个是引脚数参数,第三个是置0枚举变量。最后清除中断标志位,需要一个引脚号参数,否则将会一直执行中断服务函数。
那么最后的效果就是,当PA0连接的按键被按下时,触发中断事件,进入中断服务函数把小灯置1(关闭);当PC13连接的按键被按下时,触发中断事件,进入中断服务函数把小灯置0(点亮)。该小小小项目用到了led灯,按键,外部中断。