Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
任务调度
好像一直不能回到线程里面
发布于 2021-08-04 19:19:57 浏览:958
订阅该版
rt_ipc_list_resume_all 程序移植在这个函数里面出不去 ```c if(p_cmd != NULL)//列表中有该命令 { /* 调用相关命令的处理函数 */ func_cmd_ret = p_cmd->func(strueclient.recv_buf,strueclient.recvlen,strueclient.curr_line); /* 将接收缓存清空 */ memset(strueclient.recv_buf, 0x00, strueclient.bufsize); strueclient.recvlen = 0; //接收长度设置为0 if( func_cmd_ret == OK ) //命令处理结束 { if(strueclient.cmd_notice) //判断当前命令信号量是不是空 { /* 接收成功释放信号量 */ rt_sem_release(strueclient.cmd_notice); } strueclient.curr_line = 0;//将当前命令接收行清零 if(strueclient.lock != NULL) { rt_mutex_take(strueclient.lock, RT_WAITING_FOREVER);//等待一行数据处理完成 rt_mutex_release(strueclient.lock); } } } if( module_4g.data_interaction_steps == INTERACTION_STEPS_32FUNCTION_CODE )//32功能码 { for(uint8_t i = 0;;i++) { if(i >= 5)//该指令出错重复5次 { if(module_4g.flag_module_error == FLAG_NETWPRK_ERROR_OK) { module_4g.flag_module_error = FLAG_NETWPRK_ERROR_CURR;//发送当前值失败 } return -ERROR;//返回出错标志 } creat_at_cmd("AT+QISEND"); /* 声明一个变量,用于记录数据长度 */ int data_len = 0; data_len = send_32functioncode((uint8_t*)sen4g_buf,TX4G_LEN); //将当前值装载到缓存里面,用于发送 if(data_len > 0 ) { txbuf_len = ( uint16_t )data_len;//将数据长度给二进制直接发送缓存的数据长度 } else { break; } /* 重新开始发送,清相关标志 */ module_4g.flag_module_error = FLAG_NETWPRK_ERROR_OK; module_4g.flag_steps = STEPS_NULL; thread_get_mutex(); //互斥锁保护 //执行指令,发送当前值 cmd_resel = execute_at_cmd("=1,%d",data_len); delete_at_cmd();//删除相关的指令 if( (module_4g.flag_steps == STEPS_OK) && (cmd_resel == OK) )//判断指令执行结果 { //数据发送成功,先将相关标志 module_4g.flag_module_error = FLAG_NETWPRK_ERROR_OK;//错误状态标志位 module_4g.flag_steps = STEPS_NULL; //将指令执行反馈清零 cmd_resel = 0; //创建信号量,等待服务器返回数据如果 if(module_4g.sem_data_sever != NULL) { //当前的信号量不为空,先删除相关的信号量 rt_sem_delete(module_4g.sem_data_sever); } //创建一个信号量等待接受服务器返回 module_4g.sem_data_sever = rt_sem_create("32func",0,RT_IPC_FLAG_FIFO); receive_mutex();//解除保护锁,解除后接收线程会取服务器数据. rt_err_t res_sem_sever; res_sem_sever = rt_sem_take(module_4g.sem_data_sever,rt_tick_from_millisecond(1000));//等待信号量的到来 if( res_sem_sever == RT_EOK ) { //接收成功推出循环 if(module_4g.data_interaction_flag == INTERACTION_FLAG_SUCCESS)//数据解析成功 { PowerDown_DataSave.Flag_Function_32code = 1;//32功能码发送后成功获取到地址号和公司号,将标志配置到1,并添加到掉电数据的保存上取 rt_sem_delete(module_4g.sem_data_sever);//删除信号量 module_4g.sem_data_sever = NULL; module_4g.data_interaction_flag = INTERACTION_FLAG_NULL; PowerDown_DataSave.Flag_Function_32code = 32;//将标志改为32 break; } else if(module_4g.data_interaction_flag == INTERACTION_FLAG_CRC_ERROR )//数据CRC校验出错 { module_4g.flag_module_error = FLAG_NETWPRK_ERROR_CRC; } } rt_sem_delete(module_4g.sem_data_sever);//删除信号量data_inter module_4g.sem_data_sever = NULL; } receive_mutex();//释放互斥量,告诉接收线程命令接收处理完成 } /* 执行完之后,发送当前值 */ module_4g.data_interaction_steps = INTERACTION_STEPS_CURRENT_DATA; } ```
查看更多
2
个回答
默认排序
按发布时间排序
aozima
2021-08-04
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
代码本身的问题的可能性较低,结合你之前的hardfault。 建议先解决之前的问题,并着重留意栈溢出,内存写穿等问题。
出出啊
2021-08-04
恃人不如自恃,人之为己者不如己之自为也
中断里使用信号量了?
撰写答案
登录
注册新账号
关注者
0
被浏览
958
关于作者
18168993282
这家伙很懒,什么也没写!
提问
4
回答
1
被采纳
0
关注TA
发私信
相关问题
1
RTT3.1.3低优先级任务delay后不能就绪的问题
2
rt_hw_context_switch_interrupt的逻辑
3
rt_schedule()函数里面,线程处于运行状态,为什么还要从就绪链表移除
4
rt-thread 切换问题
5
RT-thread任务调度的BUG
6
RT-thread任务调度的严重BUG
7
多传感器的任务调度问题
8
为什么RTT中空闲线程永远不能被挂起?
9
studio设置ROM启动地址和向量偏移后,无法进入任务调度
10
二个线程运行一会后,卡死在TK1线程,无法进行调度了
推荐文章
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
ulog 日志 LOG_HEX 输出时间改为本地日期时间
2
在RT-Thread Studio中构建前执行python命令
3
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
4
CherryUSB开发笔记(一):FSDEV USB IP核的 HID Remote WakeUp (USB HID 远程唤醒) 2025-01-18 V1.1
5
RT-thread 缩写字典
热门标签
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
本月问答贡献
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
xusiwei1236
5
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
张世争
1
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部