void task2_task(void *p_arg) { int val=0; u8 task2_num=0; OS_ERR err; CPU_SR_ALLOC(); p_arg = p_arg; while(1) { task2_num++; //ÈÎÎñ2Ö´ÐдÎÊý¼Ó1 ×¢Òâtask1_num2¼Óµ½255µÄʱºò»áÇåÁ㣡£¡ LED2=~LED2; for(val=0;val<=100;val++) { TIM_SetCompare2(TIM2,val); delay_ms(10); } for(val=0;val<=100;val++) { TIM_SetCompare2(TIM2,100-val); delay_ms(10); } printf("ÈÎÎñ2ÒѾִÐУº%d´Î\r\n",task2_num); OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err); //ÑÓʱ1s } }这段代码有个错误请修改
时间: 2024-03-16 12:45:10 浏览: 98
在这段代码中,delay_ms()函数的具体实现未知,可能会导致任务阻塞。建议使用OS延时函数OSTimeDlyHMSM()代替delay_ms()函数来进行延时。
修改后的代码如下:
```c
void task2_task(void *p_arg) {
int val = 0;
u8 task2_num = 0;
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg;
while(1) {
task2_num++;
LED2 = ~LED2;
for(val = 0; val <= 100; val++) {
TIM_SetCompare2(TIM2, val);
OSTimeDlyHMSM(0, 0, 0, 10, OS_OPT_TIME_HMSM_STRICT, &err); // 使用 OS 延时函数代替 delay_ms 函数
}
for(val = 0; val <= 100; val++) {
TIM_SetCompare2(TIM2, 100 - val);
OSTimeDlyHMSM(0, 0, 0, 10, OS_OPT_TIME_HMSM_STRICT, &err); // 使用 OS 延时函数代替 delay_ms 函数
}
printf("ÈÎÎñ2ÒѾִÐУº%d´Î\r\n", task2_num);
OSTimeDlyHMSM(0, 0, 1, 0, OS_OPT_TIME_HMSM_STRICT, &err);
}
}
```
阅读全文