((STM32L476RG)标志设置(osThreadFlagsSet)在中断(GPIO EXTI)中执行时使微控制器崩溃]]

问题描述 投票:1回答:1

我目前正在学习CMSIS-RTOS v2,但遇到一个困扰我的问题,找不到所需的答案。

我正在使用STM32L476-Disco板和操纵杆中心按钮作为中断。我的中央操纵杆中断有一个非常简单的Interrupt回调:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    //osEventFlagsSet(evt_id,0x0001);
    HAL_GPIO_TogglePin(LD5_GPIO_Port,LD5_Pin);
    osThreadFlagsSet(ThId_Led_Blink,0x0001);
}

当我调用osThreadFlagsSet时,微控制器冻结,并且没有其他任何反应。这就是为什么我放入HAL_GPIO_TogglePin的原因:以查看MCU是否仍在响应。

我知道我的中断可以正确复位,因为当我只拨动引脚切换时,就可以正确切换Led。

ThId_Led_Blink是一个ThreadId

osThreadId ThId_Led_Blink;

我检查了ID是否已在调试器中正确设置,并且它是ID(不为null)。

如您所见,我已经尝试使用osEvenFlagsSet,但结果相同。

当我查看CMSIS_RTOS v2文档时,它确实指定可以从ISR调用osThreadFlagsSet,但是我不确定在这种情况下是否需要做其他事情来正确设置Flags并在ISR正在挂起。

感谢您的帮助

我目前正在学习CMSIS-RTOS v2,但遇到一个困扰我的问题,找不到所需的答案。我正在使用STM32L476-Disco板和操纵杆中心按钮作为中断。我...

interrupt stm32 interrupt-handling rtos cmsis
1个回答
0
投票

因此,经过数小时的搜索,我终于解决了我的问题。

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