背景: ucos-II中一共两个任务,TaskLed_0任务高优先级,TaskLed_1任务低优先级; 问题: 1. 在低优先级任务TaskLed_1中加入死循环while(1);系统就不能进行任务切换了,会一直停在TaskLed_1任务中, 2. 取消死循环while(1),uCOS则可以正常切换任务 这种是什么情况?
- void TaskLed_0(void *pdata)
- {
- while(1)
- {
- if(GPIO_ReadOutputDataBit(LED_PORT,LED_PIN_0))
- {
- GPIO_ResetBits(LED_PORT,LED_PIN_0);
- }
- else
- {
- GPIO_SetBits(LED_PORT,LED_PIN_0);
- }
- OSTimeDlyHMSM(0,0,0,500);
- }
- }
- void TaskLed_1(void *pdata)
- {
- while(1)
- {
- if(GPIO_ReadOutputDataBit(LED_PORT,LED_PIN_1))
- {
- GPIO_ResetBits(LED_PORT,LED_PIN_1);
- }
- else
- {
- GPIO_SetBits(LED_PORT,LED_PIN_1);
- }
- while(1);//程序会一直卡在这一行,不会切换到高优先级任务中
- OSTimeDlyHMSM(0,0,0,500);
- }
- }
复制代码
|