c - STM32L-发现 EXTI 中断失败

标签 c embedded interrupt stm32ldiscovery

在 IAR 编译器上使用 STM32L151xx。

我正在尝试获取 EXTI 中断,但一无所获,这是我的代码,基本上直接来自示例代码,但不起作用,

  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource10);
  EXTI_InitStructure.EXTI_Line = EXTI_Line1;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  EXTI_GenerateSWInterrupt(EXTI_Line1);

当我将 PA10 引脚拉高时,我没有收到软件中断,代码没有转到 EXTI1_IRQHandler(),似乎缺少什么? 编辑EXTI_GetFlagStatus 上我得到 0 和 EXTI_GETITStatus 我得到 0

最佳答案

PA9 连接到 Line9,以及 PA10 Line 10 通过 EXTI9_5_IRQHandler 进行中断服务( EXTI9_5_IRQn)EXTI15_10_IRQHandler (EXTI15_10_IRQn)

关于c - STM32L-发现 EXTI 中断失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19157681/

相关文章:

c - 查找二维 vector 数组中的右上元素

c - 实现函数队列调度的2D队列

c - 将具有绝对地址的符号链接(symbolic link)到 PIC 二进制文件

exception - RISC-V SYSTEM 指令如何实现为陷阱?

c - 如何防止使用 arm-none-eabi-gcc 编译器对该函数进行 vector 运算优化?

关于 "double"乘法的C编程

linux - 在 linux 中调用中断处理程序的下半部分的函数

arduino - Arduino 时钟(毫秒)在中断期间是否继续在后台计数?

c - SHA256 为每个输入生成相同的哈希值

c - STM32 USB OTG HOST 库在尝试使用 FatFs 创建文件时挂起