Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FreeRTos高频ISR_Freertos_Isr - Fatal编程技术网

FreeRTos高频ISR

FreeRTos高频ISR,freertos,isr,Freertos,Isr,有人能帮我做一个执行率高(比如6kHz)的任务吗? 需要在此频率上进行SPI传输(任务代码已编写)。我可以在没有任何控制的情况下达到7kHz以上(只有一个任务没有定时控制,全天运行),所以时间不是问题 问题是滴答率的分辨率为ms,这对于我的需要来说太高了。在做一些研究时,我发现降低时间分辨率会导致不必要的开销 所以,方法是使用ISR。是这样吗?找不到如何做到这一点的示例。我在FreeRTos几乎没有任何经验 在Toradex IMX7D中使用Toradex FreeRTOS版本 提前感谢。您是在

有人能帮我做一个执行率高(比如6kHz)的任务吗? 需要在此频率上进行SPI传输(任务代码已编写)。我可以在没有任何控制的情况下达到7kHz以上(只有一个任务没有定时控制,全天运行),所以时间不是问题

问题是滴答率的分辨率为ms,这对于我的需要来说太高了。在做一些研究时,我发现降低时间分辨率会导致不必要的开销

所以,方法是使用ISR。是这样吗?找不到如何做到这一点的示例。我在FreeRTos几乎没有任何经验

在Toradex IMX7D中使用Toradex FreeRTOS版本


提前感谢。

您是在问如何使用FreeRTOS来实现这一点吗?在这种情况下,有示例,网站()也有示例。然而,正如您自己指出的,由于频率的原因,您确实需要在中断中执行此操作-在这种情况下,您需要查看硬件手册,了解硬件在将数据DMA到外围设备等方面有哪些功能。

您需要更清楚地表达您的任务。什么单片机?双面传输?你有DMA吗

您可以尝试使用MCU的计时器来执行计时,并在其ISR运行中执行 xsemaphoregivefromsr


在RTOS任务中,put listenerxSemaphoreTake(xSemaphore,LONG_TIME)=pdTRUE根据examples/imx7\u colibri\u m4/driver\u examples/gpt(Toradex FreeRTOS版本)中的解决方案对其进行了解析

刚使用的GPTB来自ccmRootmuxGptOsc24m时钟。这很重要,因为linux内核在启动时使用默认的Pfd0时钟挂起

要获得所需的频率,只需将GPTB频率除以所需的频率,并传递给GPT_SetOutputCompareValue()。

是的,我使用的是FreeRTOS(已更新问题)。查阅了我正在使用的SoM手册,并使用GPT中断进行了操作。将发布解决方案。谢谢