ssimple 发表于 2021-4-7 22:22:44

请教一下,关于时间片轮转的问题

H7的开发板,freertos的例程模板。
1.只创建了两个优先级一样的任务,取消了系统延迟
void AppTaskLED(void *argument)
{
    while(1)
    {
                bsp_LedOff(2);
                //osDelay(1000);               
    }
}


void AppTaskLED1(void *argument)
{
    while(1)
    {
                bsp_LedOn(2);
                //osDelay(1000);               
    }
}

2.把这个频率配置成1,时间片是不是就是1s,按理说两个一样的任务应该是各运行1s,然后再切换,对应的开发板现象应该是led2间隔1s闪烁,为啥闪烁频率要更快呢

#define configTICK_RATE_HZ                      ((TickType_t)1)



求大佬解释下

eric2013 发表于 2021-4-8 09:44:23

注意,那个Systick是24bit计数器。最大值……2^24 - 1 = 16777215

ssimple 发表于 2021-4-8 11:04:56

eric2013 发表于 2021-4-8 09:44
注意,那个Systick是24bit计数器。最大值……2^24 - 1 = 16777215

啥意思,configTICK_RATE_HZ这个配置为1时间片不是1s吗

eric2013 发表于 2021-4-8 11:07:27

ssimple 发表于 2021-4-8 11:04
啥意思,configTICK_RATE_HZ这个配置为1时间片不是1s吗
16777215次计数就把Systick整溢出了。

H7的主频是400或者480MHz,你配置为1Hz,分配不出来。

ssimple 发表于 2021-4-8 11:15:22

eric2013 发表于 2021-4-8 11:07
16777215次计数就把Systick整溢出了。

H7的主频是400或者480MHz,你配置为1Hz,分配不出来。

明白了!谢谢大佬!
页: [1]
查看完整版本: 请教一下,关于时间片轮转的问题