c++ - 从 svc 触发 pendsv || 手动触发 systick 皮质 m4
问题描述
我目前正在研究手臂皮质 m4。我通过从 SysTick 中断触发 PendSV(进行切换)来实现一个简单的上下文切换。我试图void delay(int ms)
通过 SVC 实现一个功能。它应该像这样工作:
- 触发 SVC
- 延迟函数将延迟写入task_info
- 下次任务轮到并跳过任务时,调度程序会减少 task_info 中的延迟。
- 当延迟等于 0 时,任务会再次正常调度
问题是,我想在延迟函数将相应的值写入 task_info 之后触发上下文切换。否则延迟只会在下一次上下文切换后生效。我试图从 SVC 中断触发 PendSV。可悲的是,这似乎不起作用。
在我之前实现的延迟函数中,当多个任务同时调用该函数时,我陷入了内存使用错误。
由于当前的想法在时间上更加精确,我希望它能够工作。非常感谢您的帮助。
PS:为了清楚起见,延迟值int ms
乘以从时钟速度和 SysTick 频率得出的因子。
解决方案
推荐阅读
- python - 如何将返回的变量传递给 Jupyter Notebook 中的其他方法
- sql - SQL - round down to two decimal places
- mapbox - Get bounding box for a layer in Mapbox-GL-JS
- flask - 引导程序/烧瓶格式问题
- git - What does `git commit file.txt` do if file.txt is not staged?
- javascript - LeafletJS Marker latitude and longitude is incorrect when placed within China
- php - getting error "Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064"
- java - 如何从服务器端 java 返回正确的 JSON 到 DataTables?
- sql - R 中有没有办法将扁平的层次结构表转换为完整的扩展输出以用于映射?
- python - 将多索引和单索引数据帧相乘