我正在开发包含 LPC1768 微控制器的电路板。我想做的就是使用 CMSIS RTOS API 的 osdelay 函数创建一个准确的时间延迟。我已将我的 systick 时间滴答计数设置为 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 毫秒的延迟,因为它应该将 systick 计时器刻度值设置为 1000。