机器人”大脑”:RT-Thread的main线程“卡死”的一种可能原因及解决方案,现在的裸机程序已经不能满足嵌入式机器人所需的代码结构要求了
第一步:配置portserial.c 源码文件中portserial.c包含下面几个函数,大体功能如注释所述。 1 void 2 vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )//可以根据输入参数配置RS485收发器的收发模式 3 { 4 /* If xRXEnable enable serial receive interrupts. If xTxENable enable 5 * transmitter empty...
rt-thread + cubemx,卡死在HAL_GetT 前言:打算了解下rt-thread的实时操作和cubemx使用,想着照着抄别人的作业应该不会有错,尴尬就是板子愣是跑不起来。就只能一步一步调试,发现卡在HAL_GetT() 这个函数上。有了这个线索,搜一搜可能出个结果把。但是发现网上相关问题少的可怜,解决办法也就一两个。怎么感觉rt-...
现象:FinSH线程卡死,明显的发现就是,使用调试模式时,可以正常接收指令,但是正常运行时,就无任何响应。 原因:深入分析后,会在 shell.c 文件中的 finsh_getchar 函数中看到信号量的使用,如下图所示: 现在原因找到了,那么我们只需要在适当的时候释放信号量即可,那我们在找找看看有么有信号释放的函数,接下来我们会...
调用rt_thread_delay一次会出现程序卡死,但调用两次就不会了void Using_Water(uint16_t ms){Water_Control(1);r
创建一个Task,然后,在Task里面while()死循环获取事件,相关代码如下: 咨询群友,说是RTOS就应该配置为2,但是,还是觉得不对劲,总觉得这个事件获取应该是和代码有关,而不是和系统的有无有关。 偶然之下,将NRF_SDH_DISPATCH_MODEL的值从2设置为0,解决这个卡死问题,实锤了与系统的有无毫无关联: ...
首先,任务调度器启动前是不会有中断的,用中断发送,可能不会输出数据,如果是阻塞模式,可能会永久卡死到这里;如果是非阻塞模式,可能有很多信息被扔掉。 **所以,任务调度器启动前,串口终端输出要么用轮询输出,要么给个很大的输出缓存**,至于多大合适,这个谁也说不好。
在操作系统中,可以统一使用系统延时rt_thread_mdelay来解决问题,操作方法类似于最开始学习单片机时的delay()函数一样,无需担心任务卡死。在简单的应用中,如果使用多个任务,完全可以不用考虑系统会卡死。当然,该操作系统还有更高级的功能,此处不作赘述。资料准备 本次移植基于国民的n32g430芯片进行移植。国民技术...
完善AT Socket 中错误日志处理;修复AT Client 初始化未完成,串口接收到数据卡死问题BSP 增加东软载波ES32芯片支持(由东软载波维护、支持);增加ARM Cortex-M23内核的GD32E230K-start BSP (xuzhuoyi);增加IMXRT1021-EVK BSP(由NXP维护、支持);IMXRT1052驱动中增加ETH对于硬件checksum的选项处理;在嘉楠堪智K210 ...