设置引脚后触发外部中断

问题描述 投票:0回答:2

我正在尝试让外部中断在 Nucleo-F030R8 然后撞到墙上了。

一切都已配置并在单步模式下运行得很好,但是当我使用简单的跳线将我的板连接到另一个测试板并运行相同的代码时,即使该测试板(第二个测试板)也会触发外部中断 Nucleo-F302R8, 它应该只产生一个信号峰值,我想用第一个信号峰值来测量)没有打开。

我混合使用了 STM 的 HAL 库和我自己的一些代码。

有人最终遇到过类似的问题吗? 我正在使用 STM32 的系统工作台。

部分ISR、Interrupthandler被砍掉

void EXTI0_1_IRQHandler(void)
{
   /* USER CODE BEGIN EXTI0_1_IRQn 0 */
   if ((EXTI->IMR & EXTI_IMR_MR0) && (EXTI->PR & EXTI_PR_PR0))
   {
       int_flag_pin.copen = 1;
   }
   if ((EXTI->IMR & EXTI_IMR_MR1) && (EXTI->PR & EXTI_PR_PR1))
   {
      int_flag_pin.ma1 = 1;
   }

   /* USER CODE END EXTI0_1_IRQn 0 */
   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
   /* USER CODE BEGIN EXTI0_1_IRQn 1 */

   /* USER CODE END EXTI0_1_IRQn 1 */
}

在将引脚设置为低电平和改变上升电平之间,中断触发。

TEST_GPIO_Port->BSRR = (uint32_t) TEST_Pin;
//HAL_GPIO_WritePin(TEST_GPIO_Port, TEST_Pin, GPIO_PIN_RESET);      
TEST_GPIO_Port->BRR = (uint32_t) TEST_Pin;
change_rising(0);

更新:

难道通过

BSRR
BRR
重置Pin会产生中断吗? 我正在逐步检查我的代码,每次重置引脚时都会生成中断。

c stm32 stm32f0 stm32f3
2个回答
0
投票

如果TEST_Pin是GPIO_PIN_0或GPIO_PIN_1引脚,您将合法收到irq。 EXTI0_1_IRQHandler 捕获来自任何端口(除了 #0 或 #1 引脚)的 irq。


0
投票

通常,当我遇到的问题在步进模式下没有出现时,这意味着它与时间相关。我会尝试在设置中断引脚之前添加启动延迟,该延迟足够长以允许驱动中断引脚的 MCU 启动。如果问题消失,则意味着 1 个 MCu 的启动速度比另一个更快,并且引脚可能仍处于稳定状态,并触发中断。

© www.soinside.com 2019 - 2024. All rights reserved.