新手入门
- 积分
- 15
- 金钱
- 15
- 注册时间
- 2019-8-27
- 在线时间
- 3 小时
|
1金钱
各位大神,
我在stm32f407开发板上带FreeRTOS操作系统运行时,创建了两个任务,任务一中打印一串信息,任务二中打印一串信息,但是在调试时发现打印出的信息错乱,但是过段时间恢复正常。
注: 两个任务为同优先级,且时间片修改为100ms切换。
修改如下: #define configTICK_RATE_HZ ( ( TickType_t ) 10 )
代码如下:
/**********LED1*************/
void vTaskLED1(void *pvParameters)
{
while(1)
{
printf("Task1 is running\r\n");
for(uint32_t i=0;i<0x1ffffff;i++);
}
}
/**********LED2************/
void vTaskLED2(void *pvParameters)
{
while(1)
{
printf("Task2 is running\r\n");
for(uint32_t i=0;i<0x1ffffff;i++);
}
}
void Task_Create(void)
{
xTaskCreate(vTaskLED1,
"vTaskLED1",
128,
NULL,
3,
&TaskLED1_Handle
);
xTaskCreate(vTaskLED2,
"vTaskLED2",
128,
NULL,
3,
&TaskLED2_Handle
);
printf("LED1 and LED2 Task is Create\r\n");
}
int main()
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
Bsp_Led_Init();
uart_init(115200);
printf("hello world, welcome to FreeRtos\r\n");
Task_Create();
vTaskStartScheduler();
while(1)
{
}
}
实际运行结果如图所示:
[21:08:23.245]收←◆hello world, welcome to FreeRtos
LED1 and LED2 Task is Create
TTaasskk2 1is isr ruunnnniingng
[21:08:25.272]收←◆TaskT2 aiss k1r ius nrniungnni
ng
[21:08:27.295]收←◆Task2 Tiassk1 ruinnsin grunn
ing
[21:08:29.320]收←◆Task2 iTs arusnk1n iis nrgu
nning
[21:08:31.346]收←◆Task2 is ruTnnainsgk1 i
s running
[21:08:33.371]收←◆Task2 is runnTinags
k1 is running
[21:08:35.396]收←◆Task2 is running
Task1 is running
[21:08:37.421]收←◆Task2 is running
Task1 is running
[21:08:39.446]收←◆Task2 is running
Task1 is running
从上面结果来看,刚开始是乱的,但运行几秒种后就恢复正常,一直没找到原因,请各位大神帮忙看看,不胜感激。
|
|