我有两个功能:
shell()使用getchar()获取用户输入
playLED()播放LED动画
我有两个在FreeRTOS中运行的任务
xTaskCreate(
shell,
"shell",
512,
NULL,
1,
NULL);
xTaskCreate(
playLED,
"playLED",
512,
NULL,
15,
NULL );
vTaskStartScheduler();
然后我注意到LED动画播放是逐步进行的,仅当getchar()接收到用户输入时才会更改,而不是平滑的动画。
我已经将LED优先级设置得更高,但这并不能解决停机问题。还有什么我应该在某处配置的吗?
代码在带有MCUXpresso的NXP LPC54018板上运行。在https://os.mbed.com/questions/781/Skip-getchar-if-no-input-using-interrupt/
上可以找到其他设备上的类似问题。答案 0 :(得分:1)
getchar()在接收输入时是否完全禁用中断?在这种情况下,FreeRTOS调度程序将无法运行高优先级任务。
答案 1 :(得分:0)
我认为使用getChar的任务开头的vTaskDelay(1)将解决此问题。
您还可以更改任务创建的顺序,它也可以提供帮助。