ANG 发表于 2024-1-3 11:15:28

FreeRTOS时间片大小

现在项目使用的是STM32H743芯片,有一个任务需要100us执行一次,想请问硬汉哥FreeRTOS的时间片大小能不能设置成100us?会不会对单片机的性能产生影响?要是不能设置成100us的话,有没有其它可以实现的方法?定时器中断100us可行吗?

我在STM32CubeMX已经尝试设置100us,但是不行,时间片不能设置成比1ms小。是有什么限制吗?

2360985396 发表于 2024-1-3 18:32:20

当你时间片达到us级别的时候 任务切换已经是很耗时的了 会导致任务切换卡顿 切换一次也是几us的时间

eric2013 发表于 2024-1-4 09:09:29

没问题的,H7系列有500MHz主频,100us是无压力的。你仅创建一个任务测试下。

Lanyu199920922 发表于 2024-1-4 21:43:14

eric2013 发表于 2024-1-4 09:09
没问题的,H7系列有500MHz主频,100us是无压力的。你仅创建一个任务测试下。

硬汉老师,请问下一般来说,主频与时间片的对应关系是多少呢,我问过一个同事,说是差不多1000倍的关系

一颗大白菜 发表于 2024-2-20 11:45:02

可以用定时器中断,1ms是默认的时间片,如果想有更小的时间做其他事情的话,就用定时器中断。

eric2013 发表于 2024-2-20 11:53:09

Lanyu199920922 发表于 2024-1-4 21:43
硬汉老师,请问下一般来说,主频与时间片的对应关系是多少呢,我问过一个同事,说是差不多1000倍的关系

一般情况下,都是设置系统时钟节拍为1KHz。

zbq 发表于 2024-3-4 15:28:26

可以用一个定义器定时100us触发信号量,然后任务阻塞该信号量,这个任务优先级调高,是不是就成100us了

eric2013 发表于 2024-3-4 16:02:10

zbq 发表于 2024-3-4 15:28
可以用一个定义器定时100us触发信号量,然后任务阻塞该信号量,这个任务优先级调高,是不是就成100us了

可以,就是要额外占用系统资源和性能。

Sujc 发表于 2024-3-7 13:45:29

个人认为tick设得太小会降低系统效率,如果你设置100us,任务又比较多的话,光切换任务的时间花消就占了很大部分,留给你任务处理的时间就很短,CPU资源被浪费在无效的任务切换之中,就像楼上的兄弟说的系统会非常卡顿。100us用定时器中断没问题的。
页: [1]
查看完整版本: FreeRTOS时间片大小