硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2008|回复: 11
收起左侧

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

[复制链接]

10

主题

14

回帖

44

积分

新手上路

积分
44
发表于 2022-4-14 15:01:36 | 显示全部楼层 |阅读模式
本帖最后由 chenjinyu923 于 2022-4-14 15:23 编辑

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106578
QQ
发表于 2022-4-14 16:23:06 | 显示全部楼层
这个是断言失败,中断里面调用的函数是否是以FromISR结尾的函数。
回复

使用道具 举报

10

主题

14

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2022-4-14 16:51:46 | 显示全部楼层
eric2013 发表于 2022-4-14 16:23
这个是断言失败,中断里面调用的函数是否是以FromISR结尾的函数。

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

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2022-4-14 20:21:56 | 显示全部楼层
看看这个中断的优先级,和freertos的要匹配。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106578
QQ
发表于 2022-4-15 01:58:59 | 显示全部楼层
和楼上坛友说的一样,你要在受FreeRTOS管理的中断里面才可以调用。
回复

使用道具 举报

10

主题

14

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2022-4-15 14:55:23 | 显示全部楼层
eric2013 发表于 2022-4-15 01:58
和楼上坛友说的一样,你要在受FreeRTOS管理的中断里面才可以调用。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106578
QQ
发表于 2022-4-15 15:45:29 | 显示全部楼层
chenjinyu923 发表于 2022-4-15 14:55
我这个是stm32h747的双核HSEM中断。又做了个实验,发现按键中断就都正常,这个HSEM中断如果不使用xSemaph ...

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

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

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 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 就卡死的现象。
回复

使用道具 举报

10

主题

14

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2022-4-22 09:53:19 | 显示全部楼层
bairenxt 发表于 2022-4-15 20:12
猜测 HSEM中断优先级 高于  freertosconfig.h 中配置的freertos可管理的中断优先级 ,调用某些freertos api ...

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

使用道具 举报

10

主题

14

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2022-4-22 10:23:03 | 显示全部楼层
chenjinyu923 发表于 2022-4-22 09:53
我的HSEM中断优先级和按键中断优先级相同,都是7,没有高于freertos可管理的中断优先级。按键中断能正常 ...

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

使用道具 举报

10

主题

14

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2022-4-22 10:34:31 | 显示全部楼层
问题解决了,不是FreeRtos的问题,也不是中断问题
回复

使用道具 举报

5

主题

1

回帖

16

积分

新手上路

积分
16
发表于 2023-2-17 10:41:30 | 显示全部楼层
您好,问一下,你这个是哪里的问题啊,我现在DMA通道4里使用中断级二值信号量,返回值一直是错误的,但在之前这部分是正常的,我怀疑是其他地方影响,请问你是怎么解决的啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-25 13:40 , Processed in 0.328787 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表