发新帖我要提问
12
返回列表
打印
[STM32F1]

老是执行 WRN_IDL()

[复制链接]
楼主: morrisk
手机看帖
扫描二维码
随时随地手机跟帖
21
这就得检查对这些变量的赋值条件了

使用特权

评论回复
22
qcliu| | 2023-2-7 08:28 | 只看该作者
仅从这段代码看不出来 因为只有判断没有赋值

使用特权

评论回复
23
AdaMaYun| | 2023-2-7 08:44 | 只看该作者
是硬件的问题吗

使用特权

评论回复
24
SantaBunny| | 2023-2-11 16:31 | 只看该作者
检查下中断设置

使用特权

评论回复
25
公羊子丹| | 2025-4-6 07:36 | 只看该作者
看代码结构,WRN_IDL() 可能是在 b_W1A == 0 || b_W1B == 0 时一直执行的。检查一下这两个变量的状态,看看它们在执行条件判断时是不是总是为 0。

使用特权

评论回复
26
周半梅| | 2025-4-6 07:37 | 只看该作者
WRN_IDL() 一直被执行有可能是 b_W1A 和 b_W1B 这两个变量的值一直没变,试试在调试时查看它们的实际值,看看是不是因为外部输入的问题。

使用特权

评论回复
27
帛灿灿| | 2025-4-6 07:39 | 只看该作者
我遇到过类似的情况,可能是你在中断或者外部事件处理时,某些标志位没有及时清除,导致条件一直成立。

使用特权

评论回复
28
童雨竹| | 2025-4-6 07:40 | 只看该作者
你可以加个调试语句来看看 b_W1A 和 b_W1B 的状态变化,确认是不是这两个变量的变化不符合预期。

使用特权

评论回复
29
万图| | 2025-4-6 07:41 | 只看该作者
也许是逻辑问题,尝试把 else 语句改成 else if,避免有多个条件同时满足,导致进入错误的分支。

使用特权

评论回复
30
Wordsworth| | 2025-4-6 07:43 | 只看该作者
看起来 b_I1A, b_I1B, b_I2A, b_I2B 等标志位可能都在一个特定的条件下才会设置为真。可以试着先单独调试这些标志位的变化。

使用特权

评论回复
31
Bblythe| | 2025-4-6 07:44 | 只看该作者
还有一个可能是系统状态更新不及时,尤其在嵌入式中,如果标志位更新有延迟,可能会导致进入错误的判断逻辑。试着在判断条件前加入一些延时或防抖机制。

使用特权

评论回复
32
Pulitzer| | 2025-4-6 07:45 | 只看该作者
你可以先单独测试 WRN_IDL() 调用的那一块代码,确保它不是被误触发。如果 b_W1A 或 b_W1B 的值不对,可以检查它们的更新流程。

使用特权

评论回复
33
Uriah| | 2025-4-6 07:47 | 只看该作者
如果是在多任务系统中,检查一下是否有任务调度问题导致标志位的值不正确或者不及时更新。

使用特权

评论回复
34
Clyde011| | 2025-4-6 07:48 | 只看该作者
可以把逻辑分开调试,一步一步检查条件的每一部分,看看是不是其中某一部分的状态不符合预期,导致误执行 WRN_IDL()。

使用特权

评论回复
35
星闪动力| | 2025-4-7 12:13 | 只看该作者
中断输入可能设置错误,核对中断配置看看。

使用特权

评论回复
36
未来AI| | 2025-4-8 09:35 | 只看该作者
检查条件表达式是否正确,确保逻辑清晰。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则