ST意法半导体
直播中

张强

7年用户 1382经验值
私信 关注
[问答]

请问如何为中断模式启用GPIO输入?

H745 数据表说通用输入/输出:最多 168 个具有中断功能的 I/O 端口
然而,我选择作为 GPIO 的每个引脚(例如 PORTC.13 (PIN E3))仅列出输入或输出选项,但没有中断模式。
如果我绕过 STM32CubeIde 1.3.1 的自动代码生成,并强制初始化一个 GPIO 以中断......读取 PIN 有效,但中断不:
  • GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  • GPIO_InitStruct.Pull = GPIO_NOPULL;
  • GPIO_InitStruct.Pin = GPIO_PIN_13;
  • HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  • /* Enable and set EXti lines 15 to 10 Interrupt to the lowest priority */
  • HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0);
  • HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
  • /* Configure the EXTI line for IT*/
  • HAL_EXTI_D1_EventInputConfig(EXTI_LINE13 , EXTI_MODE_IT, ENABLE);
如何让任何 GPIO 发出中断?








回帖(1)

张子腾

2023-2-6 10:01:28
谢谢,我没有注意到 GPIO_EXTI 选项!然而,即使选择它并将其设置为中断模式,它也会生成与我尝试/发布的代码片段相同的代码。
我终于通过将它添加到 stm32h7xx_it.c 来让它工作:


  • void EXTI15_10_IRQHandler(void)
  • {
  • HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
  • }

另一个 GOTCHA,是将 PE0 设置为 GPIO_EXT 会自动从 PX0 中删除该模式!我没有意识到,但似乎所有端口 (AI) 共享 13 个中断,即对于给定的位,您只能在所有端口上为该位设置一个中断!前任。PC0 中断表示没有PE0 中断可用。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分