請教一個問題,使用freertos操作系統(tǒng),那么這個vTaskDelay()函數(shù)的延時基準是多少呢?我看freertos使用了SysTick_Handler()函數(shù)

我把注釋掉了Delay_Init();? ? 然后自己初始化的系統(tǒng)滴答定時器

捕獲.1JPG.JPG

//SysTick 初始化配置

static uint32_t SysTick_Config(uint32_tticks)

{

? ? SysTick->CTLR = 0x00000000; ? ? ? ? ? ? //控制寄存器復位


? ? SysTick->SR = 0x00000000; ? ? ? ? ? ? ? //狀態(tài)寄存器復位


? ? SysTick->CNT = 0x00000000; ? ? ? ? ? ? ?//計數(shù)器復位,設置初始值為0


? ? SysTick->CMP = ticks; ? ? ? ? ? ? ? ? ? //給重加載寄存器賦值


? ? NVIC_SetPriority(SysTicK_IRQn, 3); ? ? ?//設置SysTick中斷優(yōu)先級


? ? NVIC_EnableIRQ(SysTicK_IRQn); ? ? ? ? ? //使能開啟Systick中斷


? ? SysTick->CTLR |= 0x0000000B; ? ? ? ? ? ?//啟動系統(tǒng)計數(shù)器STK(HCLK/8時基),向上計數(shù)到比較值后重新從 0 開始計數(shù)


? ? return (0);

}


//SysTick初始化

void Systick_Init(void)

{

? ? //此處在進行初始化的時候設置比較寄存器的值

? ? SysTick_Config(SystemCoreClock / 8000 );//1ms ? 72M/8000/9000000 = 1/1000 = 1ms


}



它這個port.c里面定義了SysTick_Handler()這個函數(shù)

捕獲3.JPG


就是這個地方改為多少,vTaskDelay(1);是1ms時間呢?捕獲.JPG


您好,若使用FreeRTOS,建議延時函數(shù)直接調(diào)用vTaskDelay函數(shù),關(guān)于configTICK_RATE_HZ,值改成1000應該是1ms左右,你可以試一下,后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通



vTaskDelay可以實現(xiàn)us級延時嗎


您好,若需要實現(xiàn)us級延時,可將configTICK_RATE_HZ的值修改大一些即可,如下圖

image.png


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频