Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
main主线程是否只执行一次就退出?
发布于 2021-10-21 16:23:16 浏览:1897
订阅该版
我是个RT-thread新手,我将rt-thread移植到了sama5d2x上,能够进入main主函数,但是只能执行一次,就一直执行rt_thread_idle_excute函数,不再出来。我的main含数中加了一个死循环,在循环里仅执行了500ms的延时,其他啥都没干。 有谁给些指点么?我该从哪里查起?
查看更多
9
个回答
默认排序
按发布时间排序
aozima
2021-10-21
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
Show you bad code!
yangjie
认证专家
2021-10-21
hello
> 我的main含数中加了一个死循环,在循环里仅执行了500ms的延时,其他啥都没干。 这个没意义吧
flashman2002
2021-10-21
这家伙很懒,什么也没写!
你可以在msh上使用ps命令,看是否有main的线程名称一直存在。或者你在死循环中增加以下打印函数,看看效果。 其实main主线程是可以执行一次就退出的,因为它也是一个线程而已。
出出啊
2021-10-21
恃人不如自恃,人之为己者不如己之自为也
用我做的工具可以看一下 main 线程的详细信息,还有 main 线程的内置定时器详细情况
RTT_逍遥
认证专家
2021-10-21
https://github.com/supperthomas
这个你移植的系统应该还有一些没有完全移植好,比如systick,时钟滴答等,需要检查一下,一般如果正常的话,不会死在idle里面。可以检查一下
123
认证专家
2021-10-21
这家伙很懒,什么也没写!
兄弟你把while(1)删了,写两个rt_thread_mdelay(500);看看会不会死。
RTT_晓风
2021-10-22
这家伙很懒,什么也没写!
我猜你没有使用过RTOS的经验。 对于这类系统,首先会有一个默认的任务(idle thread),然后启动调度器。 [官方文档 https://gitee.com/rtthread/docs-online](https://gitee.com/rtthread/docs-online) 看你的main函数好像没有启动调度器,一般来说main函数的最后一句是要启动调度器的,而自己的while是启动一个thread 放进去。 参考文件: `bsp\avr32uc3b0\startup.c` ```c int main(void) { #ifdef RT_USING_HEAP extern void __heap_start__; extern void __heap_end__; #endif rt_hw_board_init(); rt_system_timer_init(); #ifdef RT_USING_HEAP rt_system_heap_init(&__heap_start__, &__heap_end__); #endif rt_system_scheduler_init(); //调度器初始化 rt_application_init(); #ifdef RT_USING_FINSH /* init finsh */ finsh_system_init(); finsh_set_device(FINSH_DEVICE_NAME); #endif rt_thread_idle_init(); // 调度器ilde thread 初始化 rt_system_scheduler_start(); // 调度器 启动 return 0; } ```
freebigfish
2021-10-22
这家伙很懒,什么也没写!
非常感谢!的确不熟悉RT-thread,我根据楼上的朋友的指点,把main改了附在后面。现在起了两个线程,每个线程都能切换,不过只能跑一次,然后就陷在idle线程中出不来了. ```c int main(void) { rt_thread_init(&led1_thread, "led1", led1_thread_entry, RT_NULL, &rt_led1_thread_stack[0], sizeof(rt_led1_thread_stack), 3, 20); rt_thread_init(&led2_thread, "led2", led2_thread_entry, RT_NULL, &rt_led2_thread_stack[0], sizeof(rt_led2_thread_stack), 3, 20); rt_thread_startup(&led1_thread); rt_thread_startup(&led2_thread); } ```
眷珏子
2021-11-18
这家伙很懒,什么也没写!
请问楼主解决了吗?我好像遇到了一样的问题,也是线程只执行一次就卡死,用的是RT-thread studio,芯片型号为STM32F103CBT6,RTthread版本为4.0.3,问题也像是调度器没有工作
撰写答案
登录
注册新账号
关注者
0
被浏览
1.9k
关于作者
freebigfish
这家伙很懒,什么也没写!
提问
2
回答
2
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
3
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部