chenjinyu923 发表于 2022-4-14 15:01:36

使用任务二值信号量出问题

本帖最后由 chenjinyu923 于 2022-4-14 15:23 编辑

问下硬汉大佬,我按照教程使用任务二值信号量,在中断中发现程序卡死在configASSERT( xTaskToNotify );这是怎么一回事呢?
我又测试了下二值信号量,也不行,好像是中断那里出问题了

eric2013 发表于 2022-4-14 16:23:06

这个是断言失败,中断里面调用的函数是否是以FromISR结尾的函数。

chenjinyu923 发表于 2022-4-14 16:51:46

eric2013 发表于 2022-4-14 16:23
这个是断言失败,中断里面调用的函数是否是以FromISR结尾的函数。

我确实是用的FromISR,和教程是一样的

jxf301 发表于 2022-4-14 20:21:56

看看这个中断的优先级,和freertos的要匹配。

eric2013 发表于 2022-4-15 01:58:59

和楼上坛友说的一样,你要在受FreeRTOS管理的中断里面才可以调用。

chenjinyu923 发表于 2022-4-15 14:55:23

eric2013 发表于 2022-4-15 01:58
和楼上坛友说的一样,你要在受FreeRTOS管理的中断里面才可以调用。

我这个是stm32h747的双核HSEM中断。又做了个实验,发现按键中断就都正常,这个HSEM中断如果不使用xSemaphoreGiveFromISR也正常,一旦加入了xSemaphoreGiveFromISR就会卡死。我按键中断和这个HESM的中断优先级都是7

eric2013 发表于 2022-4-15 15:45:29

chenjinyu923 发表于 2022-4-15 14:55
我这个是stm32h747的双核HSEM中断。又做了个实验,发现按键中断就都正常,这个HSEM中断如果不使用xSemaph ...

这个东西看过没,可以看下。

第12章 FreeRTOS中断优先级配置(重要)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=21094&fromuid=58
(出处: 硬汉嵌入式论坛)

bairenxt 发表于 2022-4-15 20:12:32

猜测 HSEM中断优先级 高于freertosconfig.h 中配置的freertos可管理的中断优先级 ,调用某些freertos api时,有portDISABLE_INTERRUPTS()屏蔽中断的操作,在还没执行到portENABLE_INTERRUPTS()打开中断时,产生了HSEM中断,由于 HSEM中断优先级 高于freertosconfig.h 中配置的freertos可管理的中断优先级,它可以响应,但其不受freertos 管理,故不能调用freertos 相关api(xSemaphoreGiveFromISR )。所以会有不调用xSemaphoreGiveFromISR 时正常,一旦调用xSemaphoreGiveFromISR 就卡死的现象。

chenjinyu923 发表于 2022-4-22 09:53:19

bairenxt 发表于 2022-4-15 20:12
猜测 HSEM中断优先级 高于freertosconfig.h 中配置的freertos可管理的中断优先级 ,调用某些freertos api ...

我的HSEM中断优先级和按键中断优先级相同,都是7,没有高于freertos可管理的中断优先级。按键中断能正常响应,HSEM中断里就不行

chenjinyu923 发表于 2022-4-22 10:23:03

chenjinyu923 发表于 2022-4-22 09:53
我的HSEM中断优先级和按键中断优先级相同,都是7,没有高于freertos可管理的中断优先级。按键中断能正常 ...

我又看了下,这个信号量是0,正常的信号量不应该是0

chenjinyu923 发表于 2022-4-22 10:34:31

问题解决了,不是FreeRtos的问题,也不是中断问题

czcz 发表于 2023-2-17 10:41:30

您好,问一下,你这个是哪里的问题啊,我现在DMA通道4里使用中断级二值信号量,返回值一直是错误的,但在之前这部分是正常的,我怀疑是其他地方影响,请问你是怎么解决的啊
页: [1]
查看完整版本: 使用任务二值信号量出问题