1、key.h——头文件的包络和函数的声明
#ifndef __KEY_H__
#define __KEY_H__
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_gpio.h"
//初始化EXTI层——key1
void pf9_exti_init();
//初始化GICD层——key1
void pf9_gicd_init();
//初始化GICC层——key1
void pf9_gicc_init();
//初始化EXTI层——key3
void pf8_exti_init();
//初始化GICD层——key3
void pf8_gicd_init();
//初始化GICC层——key3
void pf8_gicc_init();
//初始化EXTI层——key2
void pf7_exti_init();
//初始化GICD层——key2
void pf7_gicd_init();
//初始化GICC层——key2
void pf7_gicc_init();
#endif
2、key.c——功能函数的定义(以key1为例)
1)RCC章节初始化
//1.设置GPIOF组时钟使能
RCC->MP_AHB4ENSETR |= (0x1 << 5);
2)GPIO章节初始化
//1.设置PF9引脚为输入模式
GPIOF->MODER &= (~(0x3 << 18));
3)EXTI章节初始化
3.1设置PF9引脚和EXIT9控制器进行连接
EXTI->EXTICR3 &= (~(0xff << 8));
EXTI->EXTICR3 |= (0x5 << 8);
3.2设置PF9引脚检测方式为下降沿
EXTI->FTSR1 |= (0x1 << 9);
3.3设置PF9引脚中断不屏蔽
EXTI->C1IMR1 |= (0x1 << 9);
4)初始化GICD层
4.1设置GICD层全局中断使能寄存器