我正在尝试在Nucleo-F030R8上运行外部中断,但是遇到了问题。
在步进模式下一切都配置好并正常运行,但是当我将我的板子连接到另一个带有简单跳线的测试板上并运行相同的代码时,即使第二个测试板(Nucleo-F302R8)未打开且应该只产生我要在第一个板子上测量的单个信号峰,外部中断也会触发。
我正在使用STM的HAL库和自己写的一些代码。是否有人遇到过类似的问题?我正在使用STM32的System Workbench。
ISR的一部分,Interrupthandler被剪切。
在步进模式下一切都配置好并正常运行,但是当我将我的板子连接到另一个带有简单跳线的测试板上并运行相同的代码时,即使第二个测试板(Nucleo-F302R8)未打开且应该只产生我要在第一个板子上测量的单个信号峰,外部中断也会触发。
我正在使用STM的HAL库和自己写的一些代码。是否有人遇到过类似的问题?我正在使用STM32的System Workbench。
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
重置引脚会生成中断?
我正在逐步检查我的代码,每次引脚被重置时都会生成中断。
GPIO_InitTypeDef.Mode
是如何配置的?也许是GPIO_MODE_IT_RISING_FALLING
吗?第57页 - pan-mroku