- #include"key_it.h"
-
- void key3_it_config()
- {
- RCC -> MP_AHB4ENSETR |= (0x1 << 5);
-
- GPIOF -> MODER &= (~(0x3 << 16));
-
- EXTI -> EXTICR3 &= (~(0xFF << 0));
-
- EXTI -> EXTICR3 |= (0x5 << 0);
-
- EXTI -> FTSR1 |= (0x1 << 8);
-
- EXTI -> C1IMR1 |= (0x1 << 8);
-
- GICD -> ISENABLER[3] |= (0x1 << 2);
-
- GICD -> IPRIORITYR[24] &= (~(0x1F << 19));
-
- GICD -> ITARGETSR[24] &= (~(0x3 << 16));
-
- GICD -> ITARGETSR[24] |= (0x1 << 16);
- }
-
- void key_it_config()
- {
- RCC -> MP_AHB4ENSETR |= (0x1 << 5);
-
- GPIOF -> MODER &= (~(0x3 << 18));
-
- GPIOF -> MODER &=(~(0x3 << 14));
-
- EXTI -> EXTICR2 &= (~(0xFF << 24));
- EXTI -> EXTICR2 |= (0x5 << 24);
-
- EXTI -> EXTICR3 &= (~(0xFF << 8));
- EXTI -> EXTICR3 |= (0x5 << 8);
-
- EXTI -> FTSR1 |= (0x1 << 7);
-
- EXTI -> FTSR1 |= (0x1 << 9);
-
- EXTI -> C1IMR1 |= (0x1 << 7);
-
- EXTI -> C1IMR1 |= (0x1 << 9);
-
- GICD -> ISENABLER[3] |= (0x1 << 1);
-
- GICD -> ISENABLER[3] |= (0x1 << 3);
-
- GICD -> IPRIORITYR[24] &= (~(0x1F << 11));
-
- GICD -> IPRIORITYR[24] &= (~(0x1F << 27));
-
- GICD -> ITARGETSR[24] &= (~(0x3 << 8));
- GICD -> ITARGETSR[24] |= (0x1 << 8);
-
- GICD -> ITARGETSR[24] &= (~(0x3 << 24));
- GICD -> ITARGETSR[24] |= (0x1 << 24);
-
- GICC -> CTRL |= 0x1;
-
- GICC -> PMR |= (0x1F << 3);
-
- GICC -> CTRL |= 0x1;
- }
-
-
- void all_led_init()
- {
- RCC -> MP_AHB4ENSETR |= (0x3 << 4);
-
- GPIOE -> MODER &= (~(0x3 << 20));
- GPIOE -> MODER |= (0x1 << 20);
- GPIOF -> MODER &= (~(0x3 << 20));
- GPIOF -> MODER |= (0x1 << 20);
- GPIOE -> MODER &= (~(0x3 << 16));
- GPIOE -> MODER |= (0x1 << 16);
-
- GPIOE -> MODER &= (~(0x1 << 10));
- GPIOF -> MODER &= (~(0x1 << 10));
- GPIOE -> MODER &= (~(0x1 << 8));
-
- GPIOE -> OSPEEDR &= (~(0x3 << 20));
- GPIOF -> OSPEEDR &= (~(0x3 << 20));
- GPIOE -> OSPEEDR &= (~(0x3 << 16));
-
- GPIOE -> PUPDR &= (~(0x3 << 20));
- GPIOF -> PUPDR &= (~(0x3 << 20));
- GPIOE -> PUPDR &= (~(0x3 << 16));
- }
-
-
- void beep_init()
- {
- RCC -> MP_AHB4ENSETR |= (0x1 << 1);
-
- GPIOB -> MODER &= (~(0x3 << 12));
- GPIOB -> MODER |= (0x1 << 12);
-
- GPIOB -> MODER |= (0x1 << 6);
-
- GPIOB -> OSPEEDR &= (~(0x3 << 12));
-
- GPIOB -> PUPDR &= (~(0x3 << 12));
- }
-
-
- void fan_init()
- {
- RCC -> MP_AHB4ENSETR |= (0x1 << 4);
-
- GPIOE -> MODER &= (~(0x3 << 18));
- GPIOE -> MODER |= (0x1 << 18);
-
- GPIOE -> MODER |= (0x1 << 9);
-
- GPIOE -> OSPEEDR &= (~(0x3 << 18));
-
- GPIOE -> PUPDR &= (~(0x3 << 18));
- }
-
- #include"key_it.h"
-
- extern void printf(const char *fmt, ...);
- unsigned int i = 0;
-
-
- void deley(int ms)
- {
- for(int i = 0; i < ms; i++)
- {
- for(int j = 0; j < 2000; j++);
- }
- }
-
-
- void do_irq(void)
- {
- int i = 0,j = 0,k = 0;
- int irqno;
- printf("%d\n",irqno);
- irqno = GICC -> IAR & 0x3FF;
- switch(irqno)
- {
- case 99:
- if(i == 0)
- {
- GPIOE -> ODR |= (0x1 << 10);
- GPIOF -> ODR |= (0x1 << 10);
- GPIOE -> ODR |= (0x1 << 8);
- i = 1;
- }
- else
- {
- GPIOE -> ODR &= (~(0x1 << 10));
- GPIOF -> ODR &= (~(0x1 << 10));
- GPIOE -> ODR &= (~(0x1 << 8));
- i = 0;
- }
- printf("KEY1\n");
- GICD -> ICPENDR[3] |= (0x1 << 3);
- EXTI -> FPR1 |= (0x1 << 9);
- break;
- case 97:
- if(j == 0)
- {
- GPIOB -> ODR |= (0x1 << 6);
- j = 1;
- }
- else
- {
- GPIOB -> ODR &= (~(0x1 << 7));
- j = 0;
- }
- printf("KEY2\n");
- GICD -> ICPENDR[3] |= (0x1 << 1);
- EXTI -> FPR1 |= (0x1 << 7);
- break;
- case 98:
- if(k == 0)
- {
- GPIOE -> ODR |= (0x1 << 9);
- k = 1;
- }
- else
- {
- GPIOE -> ODR &= (~(0x1 << 9));
- k = 0;
- }
- printf("KEY3\n");
- GICD -> ICPENDR[3] |= (0x1 << 2);
- EXTI -> FPR1 |= (0x1 << 8);
- break;
- }
- GICC -> EOIR = irqno;
- }
- #include "key_it.h"
-
- int main()
- {
- all_led_init();
- key3_it_config();
- key_it_config();
- fan_init();
- beep_init();
- while(1)
- {
-
- }
- return 0;
- }