私は LPC1768 マイクロコントローラーを含むボードに取り組んでいます。私がしたいのは、CMSIS RTOS API の osdelay 関数を使用して正確な時間遅延を作成することだけです。システムスティックのタイムティックカウントを 10000 に設定しましたが、スレッドで osdelay(1000) を使用すると、1 秒の遅延期間が作成されません。
ここにソースコードがあります
#include"cmsis_os.h"
#include"lpc17xx.h"
void Thread1 (void const *argument) {
while (1) {
LPC_GPIO2->FIOPIN = 0x00000001;
osDelay(1000);
LPC_GPIO2->FIOPIN = 0x00000000;
osDelay(1000);
}
}
osThreadId main_ID,led_ID1,led_ID2;
osThreadDef(Thread1,osPriorityNormal, 1, 0);
int main (void)
{
SystemInit();
LPC_PINCON->PINSEL4 = 0x00000000;
LPC_GPIO2->FIODIR = 0xffffffff;
osKernelInitialize ();
led_ID1 = osThreadCreate(osThread(Thread1), NULL);
osKernelStart ();
}
ここで、私の問題は、osdelay(1000) が 1000 ミリ秒の遅延を提供しないことです。sysstick タイマーのティック値を 1000 に設定する必要があります。