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