整个STMF407系列的学习汇总链接如下:

https:///GreyZhang/g_stmf407

         移植了一个OS,开始运行还可以,发现加了printf之后打印不了几次就出现调度卡死的现象。我没有直接找到解决的方法,至少在我的开发环境中没有找到。不过最近正好在用两个两个芯片也用了两个开发环境,在另一个开发环境中也遇到了类似的问题。另外的一个开发环境中,有一个OS调试工具,我直接查看结果发现是堆栈空间不够了。或许是串口通信中中断太多导致了过多的现场保护吧!

         简单的问题修复就是增加堆栈空间,我直接增加了十倍。代码修改如下:

    const osThreadAttr_t os_1000ms_task_attributes = {
        .name = "task 1000ms",
        .priority = (osPriority_t)osPriorityNormal,
        .stack_size = 1280};
    task_1000ms_Handle = osThreadNew(os_task_1000ms, NULL, &os_1000ms_task_attributes);

         之后,重新运行,软件不再有问题。

         FreeRTOS值得好好学学,后期深入学习一下。一般的操作系统中应该有相应信息的追踪信息,到时候全都配置出来作为调试信息,做一下深入学习的一些输入信息。

         左后增加运行监控效果:

145_STM32F407_FreeRTOS中串口打印出现OS卡死问题解决_RTOS