[STM32F1] 老是执行 WRN_IDL()

[复制链接]
2051|35
木木guainv 发表于 2023-2-7 08:16 | 显示全部楼层
这就得检查对这些变量的赋值条件了
qcliu 发表于 2023-2-7 08:28 | 显示全部楼层
仅从这段代码看不出来 因为只有判断没有赋值
AdaMaYun 发表于 2023-2-7 08:44 | 显示全部楼层
是硬件的问题吗
SantaBunny 发表于 2023-2-11 16:31 | 显示全部楼层
检查下中断设置
公羊子丹 发表于 2025-4-6 07:36 | 显示全部楼层
看代码结构,WRN_IDL() 可能是在 b_W1A == 0 || b_W1B == 0 时一直执行的。检查一下这两个变量的状态,看看它们在执行条件判断时是不是总是为 0。
周半梅 发表于 2025-4-6 07:37 | 显示全部楼层
WRN_IDL() 一直被执行有可能是 b_W1A 和 b_W1B 这两个变量的值一直没变,试试在调试时查看它们的实际值,看看是不是因为外部输入的问题。
帛灿灿 发表于 2025-4-6 07:39 | 显示全部楼层
我遇到过类似的情况,可能是你在中断或者外部事件处理时,某些标志位没有及时清除,导致条件一直成立。
童雨竹 发表于 2025-4-6 07:40 | 显示全部楼层
你可以加个调试语句来看看 b_W1A 和 b_W1B 的状态变化,确认是不是这两个变量的变化不符合预期。
万图 发表于 2025-4-6 07:41 | 显示全部楼层
也许是逻辑问题,尝试把 else 语句改成 else if,避免有多个条件同时满足,导致进入错误的分支。
Wordsworth 发表于 2025-4-6 07:43 | 显示全部楼层
看起来 b_I1A, b_I1B, b_I2A, b_I2B 等标志位可能都在一个特定的条件下才会设置为真。可以试着先单独调试这些标志位的变化。
Bblythe 发表于 2025-4-6 07:44 | 显示全部楼层
还有一个可能是系统状态更新不及时,尤其在嵌入式中,如果标志位更新有延迟,可能会导致进入错误的判断逻辑。试着在判断条件前加入一些延时或防抖机制。
Pulitzer 发表于 2025-4-6 07:45 | 显示全部楼层
你可以先单独测试 WRN_IDL() 调用的那一块代码,确保它不是被误触发。如果 b_W1A 或 b_W1B 的值不对,可以检查它们的更新流程。
Uriah 发表于 2025-4-6 07:47 | 显示全部楼层
如果是在多任务系统中,检查一下是否有任务调度问题导致标志位的值不正确或者不及时更新。
Clyde011 发表于 2025-4-6 07:48 | 显示全部楼层
可以把逻辑分开调试,一步一步检查条件的每一部分,看看是不是其中某一部分的状态不符合预期,导致误执行 WRN_IDL()。
星闪动力 发表于 2025-4-7 12:13 | 显示全部楼层
中断输入可能设置错误,核对中断配置看看。
未来AI 发表于 2025-4-8 09:35 | 显示全部楼层
检查条件表达式是否正确,确保逻辑清晰。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部