gpt4 book ai didi

shell - 以特定频率循环 VxWorks 中的命令

转载 作者:行者123 更新时间:2023-12-02 03:29:15 26 4
gpt4 key购买 nike

我试图在 VxWorks 中以 6Hz 左右的频率循环执行命令,我无法为有问题的目标编译代码,因此我必须使用现有的 VxWorks shell 命令

我试过:

repeat(1000,functionX,param1,param2,param3)

这在重复命令 1000 次时效果很好,但不会给我所需的频率

作为妥协,我看到了:

period() 

因为这能够让我对函数进行 1hz 调用(这可能是可以接受的)但是我不知道如何将所需的参数输入到 FunctionX我都试过了:

period(1,functionX,param1,param2,param3)

period(1,functionX(param1,param2,param3))

没有运气

关于如何为 FunctionX 实现 6Hz 速率的任何想法都很棒,但如果不编译一些代码就不可能实现,那么我将解决一种方法,让 period 命令与我正在调用的函数中的参数一起工作

最佳答案

repeat 和 period 具有相同的签名,但对第一个参数的解释不同。因此,如果您可以成功调用 repeat,那么您也可以成功调用 period。

int period
(
int secs, /* period in seconds */
FUNCPTR func, /* function to call repeatedly */
int arg1, /* first of eight args to pass to func */
int arg2,
int arg3,
int arg4,
int arg5,
int arg6,
int arg7,
int arg8
)



int repeat
(
int n, /* no. of times to call func (0=forever) */
FUNCPTR func, /* function to call repeatedly */
int arg1, /* first of eight args to pass to func */
int arg2,
int arg3,
int arg4,
int arg5,
int arg6,
int arg7,
int arg8
)

对于repeat,第一个参数是调用函数的次数,对于period,第一个参数是以秒为单位的周期

所以 period 对你来说真的太慢了​​,而 repeat 太快了,尽管你可以使用 tickGet 让它工作。你真正想要的是一个 vxworks 看门狗。在您的 vxworks 文档中查找 wdCreate()wdStart(),但请注意您的看门狗处理程序将从 ISR 调用,因此应采取标准的 ISR 预防措施(也就是说,您将需要一个任务来完成真正的工作,该任务应该挂起在 msgQ 或看门狗处理程序触发的信号量上)。

实际上,现在我想起来了,我相信 repeatperiod 也会从 ISR 调用处理程序,因此从技术上讲,同样的限制也适用于那里。

关于shell - 以特定频率循环 VxWorks 中的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com