使用finsh组件时,为什么运行一次自己定义的命令后,shell就无法输入了?

发布于 2021-01-20 21:43:08

image.png

void led_tog_entry(void *parameter)
{
    while(1)
    {
        HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
        rt_thread_delay(200);
    }

}
MSH_CMD_EXPORT(led_tog_entry, LED TOG);

查看更多

关注者
1
被浏览
111
3 个回答
答案在风中飘
答案在风中飘 认证专家 2021-01-20

因为你FINSH本身是运行在FINSH线程上的,你的这个程序运行时是执行在FINSH线程上的,而你写了个WHILE(1),相当于FINSH线程完全被你这个程序占了(rt_thread_delay只是调度去执行别的线程),所以FINSH线程堵死了,当然就无法执行其他操作了

HappyTime
HappyTime 2021-01-21

在你的命令里面创建一个线程,在创建的线程里面点灯就好了。

kid
kid 2021-01-23

你这相当于老板设置了一个任务, 亲自干活去了, 怎么可能有时间干其他的呢? 应该使用影分身术, 再变出来一个老板, 然后使用分身去执行这个任务, 就能正常响应了

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览