从svc触发pendsv ||手动触发系统皮质m4

时间:2019-03-09 11:02:46

标签: c++ c arm cortex-m

我目前正在研究手臂皮质m4。我通过从SysTick中断触发PendSV(执行切换)实现了一个简单的上下文切换。我试图通过SVC实现void delay(int ms)函数。它应该像这样工作:

  1. 触发SVC
  2. Delay函数将延迟写入task_info
  3. 下次任务轮到并跳过任务时,调度程序减少task_info中的延迟。
  4. 当延迟等于0时,任务会重新正常安排

问题是,我想在延迟功能已将各自的值写入task_info之后触发上下文切换。否则,该延迟仅在下一次上下文切换之后才有效。我试图从SVC中断触发PendSV。可悲的是,这似乎行不通。

在以前的延迟函数实现中,当多个任务同时调用该函数时,我遇到了内存使用错误。

由于当前的想法在时间安排上更加精确,因此我希望它能起作用。非常感谢您的帮助。

PS:为清楚起见,int ms中的延迟值乘以从时钟速度和SysTick频率得出的因数。

0 个答案:

没有答案