Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
assert_断言
信号量_semaphore
rt_sem_take和rt_sem_release产生断言
发布于 2023-09-21 10:28:08 浏览:782
订阅该版
这报错困惑我两天了,这断言不是程序一运行就出现,而是运行了一段时间才会出现:  整个程序我只用到两个信号量,是串口uart2和串口uart4分别用来接收输入中断的两个信号量: ```c rt_err_t bt_rx_callback(rt_device_t dev, rt_size_t size)//接收回调函数 { rt_sem_release(&sem_bt);//释放 return RT_EOK; } void bluetooth_task_entry(void *paramenter) { rt_err_t ret = 0; u2_dev = rt_device_find("uart2");//在应用层找到你想要的串口设备 if(u2_dev == RT_NULL){ LOG_E("rt_device_find[uart2] failed...\n"); } ret = rt_device_open(u2_dev, RT_DEVICE_OFLAG_RDWR|RT_DEVICE_FLAG_INT_RX);//以中断的方式打开你找到的设备 if(ret < 0){ LOG_E("rt_device_open[uart2] failed...\n"); } rt_device_control(u2_dev, RT_DEVICE_CTRL_CONFIG, (void *)&u2_configs);//串口配置 rt_device_set_rx_indicate(u2_dev, bt_rx_callback);//设置回调函数调用rx_callback rt_sem_init(&sem_bt,"rx_sem_bt", 0, RT_IPC_FLAG_FIFO); my_stack = init_my_stack(5); while(1) { rt_memset(json_data_bt,0,256); int buffer_count = 0; char buffer; while(1){ while(rt_device_read(u2_dev, 0, &buffer, 1) != 1){//读取字符 rt_sem_take(&sem_bt, RT_WAITING_FOREVER); } json_data_bt[buffer_count] = buffer; buffer_count++; if (buffer == '{') //压栈 { push_my_stack(&my_stack,buffer); } else if (buffer == '}') //出栈 { pull_my_stack(&my_stack); if(my_stack.down == my_stack.up) //意味着一条json数据接收完毕 break; } if ((strcmp(json_data_bt,"stop") == 0)||(strcmp(json_data_bt,"OK") == 0)) { break; } } rt_kprintf("%s",json_data_bt); ``` ```c rt_err_t rf_rx_callback(rt_device_t dev, rt_size_t size)//接收回调函数 { rt_sem_release(&sem_rf);//释放 return RT_EOK; } void rfid_task_entry(void *paramenter) { rt_err_t ret = 0; u4_dev = rt_device_find("uart4");//在应用层找到你想要的串口设备 if(u4_dev == RT_NULL){ LOG_E("rt_device_find[uart4] failed...\n"); } ret = rt_device_open(u4_dev, RT_DEVICE_OFLAG_RDWR|RT_DEVICE_FLAG_INT_RX);//以中断的方式打开你找到的设备 if(ret < 0){ LOG_E("rt_device_open[uart4] failed...\n"); } rt_device_control(u4_dev, RT_DEVICE_CTRL_CONFIG, (void *)&u4_configs);//串口配置 rt_device_set_rx_indicate(u4_dev, rf_rx_callback);//设置回调函数调用rx_callback rt_sem_init(&sem_rf,"rx_sem_rf", 0, RT_IPC_FLAG_FIFO); rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); while(1) { if(read_card_flag == 1) { rt_pin_write(LED1_PIN, PIN_LOW); /* 发送16进制数据 */ uint8_t hex[] = {0xBB, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7E}; //单次读取卡号 rt_device_write(u4_dev, 0, hex, sizeof(hex)); uint8_t buffer; int bytes_count = 0; uint8_t bytes_data[24]; while(1){ while(rt_device_read(u4_dev, 0, &buffer, 1) != 1){//读取字符 rt_sem_take(&sem_rf, RT_WAITING_FOREVER); } bytes_data[bytes_count] = buffer; bytes_count++; if (buffer == 0x7E) //7E为结束符号 { break; } } ``` 请求大佬指正
查看更多
yangsc
2023-09-21
我太菜了
然后我偶尔能在控制台看到警告 ``` [W/UART] Warning: There is no enough buffer for saving data, please increase the RT_SERIAL_RB_BUFSZ option. ``` 不知道是否存在联系
2
个回答
默认排序
按发布时间排序
ZWH
2023-09-27
这个人很勤快,没空留下点什么
其他地方溢出也有可能
撰写答案
登录
注册新账号
关注者
0
被浏览
782
关于作者
yangsc
我太菜了
提问
4
回答
5
被采纳
1
关注TA
发私信
相关问题
1
rt_object_init中报assertion failed错误?
2
串口中断读取信号量释放函数断言失败问题
3
请问在新建工程并且添加MAX30102的组件之后编译下载怎么为什么会报这种错呢
4
运行 tls_test 出现错误,这个是什么原因
5
使用ringbuffer时,自检到thread的type不匹配
6
webnet cgi 回调 出现assert
7
keil里面移植RT系统之后,上电直接assertation
8
使用max30102软件包时出现线程断言错误
9
进入到assert后,软看门狗仍在喂狗的问题
10
shall not be used in ISR
推荐文章
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-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
KunYi
8
个答案
1
次被采纳
三世执戟
7
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部