硬汉嵌入式论坛

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

[ThreadX全家桶] ThreadX API在ISR中使用的问题探讨

[复制链接]

48

主题

376

回帖

520

积分

金牌会员

积分
520
发表于 2022-4-20 11:45:30 | 显示全部楼层 |阅读模式
本帖最后由 wanglehui_12 于 2022-4-20 11:50 编辑

各位好,

最近在实现USB MSC功能时,遇到在USB的ISR函数中等待SDIO读写操作完成的场景,

本来打算沿用 tx_event_flags_get,发现这种调用方法是错误的,返回0x04错误

(分析代码显示: 只有在Task函数中才能调用该函数:
/* A non-thread is trying to suspend, return appropriate error code.  */】)

大家有没有在多ISR中做同步的好方法和正确使用方式 ?




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115863
QQ
发表于 2022-4-20 12:10:00 | 显示全部楼层
在ISR等待还是不太合理,一般都不推荐这种问题,还是应该USB发送消息给任务,在任务里面刷合理。
回复

使用道具 举报

48

主题

376

回帖

520

积分

金牌会员

积分
520
 楼主| 发表于 2022-4-20 13:05:26 | 显示全部楼层
eric2013 发表于 2022-4-20 12:10
在ISR等待还是不太合理,一般都不推荐这种问题,还是应该USB发送消息给任务,在任务里面刷合理。

是的,ISR原则上执行时间应该尽可能短,不应该有挂起等待操作,这个是因为厂家提供的USB协议栈和SDIO驱动中间件采用的同步模式,懒得大改。后来通过标记位等待方式临时解决,将就够用了(使用场景只启动MSC功能)。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-23 12:30 , Processed in 0.271765 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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