小谦· 2023-03-22 09:06 采纳率: 100%
浏览 139
已结题

FreeRTOS有任务卡死

FreeRTOS在单片机上长时间运行后,有任务卡死
是构建了四个任务,然后长时间运行后,按键根本不响应了,但是显示还在刷新,显示的数据来源于HT7036_task_function,数据是正确的,说明只有按键任务没有被2执行,这个现象只发生在长时间运行后,刚上电的第一天没有问题。

//创建按键扫描任务
xTaskCreate((TaskFunction_t )key_task_function,
                (const char*    )"key_task",
                (uint16_t       )128,
                (void*          )NULL,
                (UBaseType_t    )2,
                (TaskHandle_t*  )&keytask_handler);

    //创建显示任务
    xTaskCreate((TaskFunction_t )display_task_function,
                (const char*    )"display_task",
                (uint16_t       )128,
                (void*          )NULL,
                (UBaseType_t    )3,
                (TaskHandle_t*  )&display_handler);

    //创建HT7036运行任务,读取电能数据 
    xTaskCreate((TaskFunction_t )HT7036_task_function,
                (const char*    )"HT7036_task",
                (uint16_t       )128,
                (void*          )NULL,
                (UBaseType_t    )2,
                (TaskHandle_t*  )&HT7036_handler);
    
    //485数据接收超时检测 
    xTaskCreate((TaskFunction_t ) receiver_task_function,
                (const char*    ) "receiver_task",
                (uint16_t       ) 128,
                (void*          ) NULL,
                (UBaseType_t    ) 2,
                (TaskHandle_t*  ) &receiver_handler);

  • 写回答

7条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-22 09:43
    关注

    基于Monster 组和GPT的调写:

    • 可能跟任务优先级、资源争用或任务阻塞等问题导致的。

    问题以及解决方案:

    • 1.任务优先级设置不正确:要按键任务的优先级比其他任务都要高。这样,当按键被按下时,它将立即响应。
    • 2.资源争用:如果按键任务和其他任务正在争用某些共享资源(例如,IO口、共享内存等),则会出现任务阻塞的情况。在访问共享资源时用适当的同步机制,例如信号量、互斥量等。
    • 3.任务阻塞:任务可能会由于等待事件而阻塞。例如,如果按键任务在等待队列中的数据,则它可能会一直阻塞,直到队列中有新数据。考虑用超时机制,保证任务不会一直阻塞。
    • 4.堆栈溢出:如果任务的堆栈空间不足,可能会任务卡死。保证每个任务都有足够的堆栈空间,根据需要增加堆栈大小。
    • 5.任务死循环:如果任务处于死循环中,则它将无法响应其他任务或中断。保证任务的代码中没有死循环。
    • 另外,考虑在FreeRTOS中启用任务监视器来检测任务阻塞的情况,以便能够及时发现问题并进行调试。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 赞助了问题酬金15元 3月22日
  • 创建了问题 3月22日

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图