EXTI.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "main.h"
  2. static void EXTI_Config(void);
  3. EXTIClassStruct EXTIClass = {
  4. .Init = EXTI_Config
  5. };
  6. #define EXTI1_PORT GPIOB
  7. #define EXTI1_CLK (RCC_APB2Periph_GPIOB)
  8. #define EXTI1_PIN GPIO_Pin_3
  9. static void EXTI_Config(void)
  10. {
  11. GPIO_InitTypeDef GPIO_InitStructure;
  12. EXTI_InitTypeDef EXTI_InitStructure;
  13. RCC_APB2PeriphClockCmd(EXTI1_CLK, ENABLE);
  14. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  15. GPIO_InitStructure.GPIO_Pin = EXTI1_PIN;
  16. GPIO_Init(EXTI1_PORT, &GPIO_InitStructure);
  17. // // 配置EXTI的信号源
  18. // GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3);
  19. // EXTI_InitStructure.EXTI_Line = EXTI_Line3; // 产生中断的管脚号
  20. // EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // 模式 Interrupt中断/Event事件
  21. // EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; // 中断的触发方式 Rising上升沿/Falling下降沿
  22. // EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能或失能中断
  23. // EXTI_Init(&EXTI_InitStructure);
  24. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  25. // NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
  26. // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
  27. // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  28. // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  29. // NVIC_Init(&NVIC_InitStructure);
  30. }
  31. /* 在别处复现此函数 外部中断函数
  32. void EXTI3_IRQHandler(void)
  33. {
  34. if (EXTI_GetITStatus(EXTI_Line3) != RESET) {
  35. }
  36. EXTI_ClearITPendingBit(EXTI_Line3);
  37. }
  38. */