Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
5
调用rt_thread_delay后线程被挂起,无法再次执行
发布于 2021-12-03 14:34:02 浏览:1467
订阅该版
参照官方手册做了一个bootloader。下载boot和app后 应用线程执行了几个时间片就被挂起不在执行了,只有空闲线程和shell在执行。未添加bootloader之前是正常的。不知道什么原因引起。如下ps命令查看结果   main线程入口,ps查看状态为挂起,但是指示灯正常闪烁 ``` int main(void) { /* set LED0 pin mode to output */ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);\ fal_init(); rt_kprintf("The current version of APP firmware is %s\n", APP_VERSION); //Sys_Init(); app_thread_init(); while (1) { LED_Working(1); rt_thread_delay(500); LED_Working(0); rt_thread_delay(500); } } ``` 断点调试发现各线程也能进去,但是SPI读不到数据了,如下AD采样使用SPI通信。bootloader之前能读到数据,现在全为0 AD采集线程入口 ``` while(1) { /*获取4个通道AD采样值,自动扫描4通道,分别存储,都为0判定为采样异常*/ for(i=0;i<11;i++) { CH1_Temp = Get_MAN_Ch_n_Mode_Data();//获取通道1的值 if( (CH1_Temp > 32000u) &&(CH1_Temp < 0xffff)) ADS_CH1_Value[i]= CH1_Temp; CH2_Temp = Get_MAN_Ch_n_Mode_Data();//获取通道2的值 if( (CH2_Temp > 32000u) &&(CH2_Temp < 0xffff)) ADS_CH2_Value[i]= CH2_Temp; CH3_Temp = Get_MAN_Ch_n_Mode_Data();//获取通道3的值 if( (CH3_Temp > 32000u) &&(CH3_Temp < 0xffff)) ADS_CH3_Value[i]= CH3_Temp; CH4_Temp = Get_MAN_Ch_n_Mode_Data();//获取通道4的值 if( (CH4_Temp > 32000u) &&(CH4_Temp < 0xffff)) ADS_CH4_Value[i]= CH4_Temp; #if 1 if((CH1_Temp == 0xffff) || (CH2_Temp == 0xffff) || (CH3_Temp == 0xffff) || (CH4_Temp == 0xffff)) { ADS8688_Init_Mult(); } #endif } if((i == SAMPLE_NUM)) { AdcValue_CH1 = MedianFilting(ADS_CH1_Value,10u); AdcValue_CH2 = MedianFilting(ADS_CH2_Value,10u); AdcValue_CH3 = MedianFilting(ADS_CH3_Value,10u); AdcValue_CH4 = MedianFilting(ADS_CH4_Value,10u); i = 0; //rt_kprintf(" channel4 ADC value :%d \n", AdcValue_CH4); } if( (AdcValue_CH1 != 0xffff) || (AdcValue_CH2 != 0xffff) || (AdcValue_CH3 != 0xffff) || (AdcValue_CH4 != 0xffff)) { if(AdcValue_CH1 > 33000u) AdcValue_Used = AdcValue_CH1; else if(AdcValue_CH2 > 33000u) AdcValue_Used = AdcValue_CH2; else if(AdcValue_CH3 > 33000u) AdcValue_Used = AdcValue_CH3; else if(AdcValue_CH4 > 33000u) AdcValue_Used = AdcValue_CH4; } else { /* AD采样值均为0,采样异常*/ RELAY_Control(OFF); //是否断开继电器? //show_error(ERROR_ADC); //return; } rt_thread_delay(5); } ```
查看更多
出出啊
2021-12-03
恃人不如自恃,人之为己者不如己之自为也
在 tshell 里敲命令查看线程状态时,idle 永远是 ready 状态,tshell 永远是 running。其它线程多数是 suspend,还可能会是ready,不可能是 running main 线程里的 led 还能闪烁说明了 main 线程还可以运行 最后的读取不到数据的问题,你还是专门详细说说这个怎么回事儿吧。
4
个回答
默认排序
按发布时间排序
WCDI_4503
2021-12-03
这家伙很懒,什么也没写!
另外两版软件在SPI应用读取程序上是完全一样的,我只是加了个bootloader,划分了flash
小小李sunny
2021-12-03
这家伙很懒,什么也没写!
线程里有delay,挂起是正常,要给其他线程资源。而你的闪灯的操作就一个语句,是很快的,之后就delay了,所以你ps查看的时候基本上都是在挂起状态。 读不到数据的问题,我觉得应该断电进入Get_MAN_Ch_n_Mode_Data()函数去看看,看是哪里出了问题导致读取不到数据。
fengzi
2021-12-03
这家伙很懒,什么也没写!
两个重名线程?
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
WCDI_4503
这家伙很懒,什么也没写!
提问
3
回答
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
【面向零基础】基于星火1号开发板从头学习基于RT-Thread的嵌入式开发 第一讲
2
新版OneNet的星火1号开发板例程适配(下)
3
基于RT-Thread的STM32F4开发第六讲——PWM输出(CH1和CH1N)
4
RT-Thread 携手 Copilot:智能代码审查,加速开源协作
5
重磅预售!RT-Trace调试工具
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
ota在线升级
BSP
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
Pai同学
8
篇文章
10
次点赞
Rick98
3
篇文章
10
次点赞
RTT_逍遥
2
篇文章
10
次点赞
加缪
1
篇文章
2
次点赞
河南理工大学恁带劲儿
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部