#ifndef __KEY_H__
#define __KEY_H__
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_gic.h"
//初始化EXTI层
void pf9_exti_init();
//初始化GICD层
void pf9_gicd_init();
//初始化GICC层
void pf9_gicc_init();
#endif
#include "key.h"
//初始化EXTI层
void pf9_exti_init() {
/*****RCC章节初始化******/
RCC->MP_AHB4ENSETR |= 0x1 << 5;
/*****GPIO章节初始化******/
GPIOF->MODER &= (~(0x3 << 18));
/*****EXTI章节初始化******/
EXTI->EXTICR3 &= (~(0xff << 8));
EXTI->EXTICR3 |= (0x05 << 8);
EXTI->FTSR1 |= 0x1 << 9;
EXTI->C1IMR1 |= 0x1 << 9;
}
//初始化GICD层
void pf9_gicd_init() {
GICD->CTRL |= 0x1 << 0;
GICD->ISENABLER[3] |= 0x1 << 3;
GICD->IPRIORITYR[24] &= (~(0x1f << 27));
GICD->ITARGETSR[24] &= (~(0x3 << 24));
GICD->ITARGETSR[24] |= 0x1 << 24;
}
//初始化GICC层
void pf9_gicc_init() {
GICC->CTRL |= 0x1 << 0;
GICC->PMR &= (~(0x1f << 3));
GICC->PMR |= 0x1f << 3;
}
#include "key.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms) {
int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 1800; j++);
}
int main() {
pf9_exti_init();
pf9_gicd_init();
pf9_gicc_init();
while (1) {
}
return 0;
}
按键中断实验
于 2022-12-29 23:48:20 首次发布