主题中讨论的其他器件:HALCOGEN
大家好、我已经将其中的第一部分发布到了 FreeRTOS 论坛、这个问题可能是由于我的中断配置中的某些问题造成的。 请参阅以下内容:
我的程序有6个任务、其中4个任务将根据硬件和软件事件的组合运行、而另外2个任务将设置为定期运行。 我将在下面为他们命名、以便让我的解释更加清晰:
任务 A1 -如果在加电时在 DIP 开关上选择了模式 A、则此任务将运行。 是的
由事件组控制
任务 A2 -如果任务 A1中发生软件事件、此任务将运行。 它也通过进行控制
事件组
任务 B1 -如果在加电时在 DIP 开关上选择了模式 B、则此任务将运行。 是的
由事件组控制
任务 B2 -如果任务 A1中发生软件事件、此任务将运行。 它也是受控的
活动组
任务 WD -此任务用于控制内部看门狗。 定期运行
任务4-20 -此任务用于控制外部4-20芯片。 定期运行。
当我注释掉4-20项任务中的一项时、一切都很好、安排/执行完全符合我的预期。 如果我在模式 A 中运行并注释掉其中一个模式 B 任务、则一切都按预期工作。 如果我在模式 B 中运行并注释掉其中一个模式 A 任务、则一切都按预期工作。 当我以模式 A 或模式 B 运行并创建所有任务时、就会出现问题。 当我执行此操作时、系统将按预期运行、直到4-20任务获得一个时间片。 此时系统将冻结。 我已经从4-20任务中删除了所有任务代码,并且刚刚添加了 vTaskDelay (),以排除我在该任务中编写的导致问题的某些代码,并且系统仍然冻结。 最初、这似乎是一个内存问题、但我能够以明显小于我现在设置的堆栈大小单独运行所有这些任务、并且它们的运行方式符合预期。 我还在创建任务时添加了保护、以确保正确创建所有任务。 我还尝试用 GIO 设置函数替换4-20任务中的 vTaskDelay、但该函数工作正常。 我已附上来自 tracealyzer 的示例屏幕截图、其中显示了冻结:
我想知道中断是否存在一些问题、这些问题可能会导致上下文切换被阻止。
请随时提出任何问题。