OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3697|回复: 2

关于freertos的队列和二值信号量有一些疑问

[复制链接]

74

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2021-2-5
在线时间
133 小时
发表于 2023-3-30 11:51:35 | 显示全部楼层 |阅读模式
1、关于队列,我最不理解的地方在于:我用一个500字节大小的数组去接收数据,但是队列项的大小是1024,队列项的发送和接收核心都是通过memcpy函数实现的,问题来了,此时搬运的是一个队列项大小的数据给我定义的数组里面,为什么没有出现越界这种错误?虽然我发送到队列的数据确实只有500字节,但是搬运的时候操作的是一个队列项大小啊,我又不是操作的指针
2、我在一个循环里面使用二值信号量去将两个不同功能的函数分开,为什么成功释放一次,成功获取一次,然后进入下次循环再去释放的时候就失败了,实际情况是卡死了,因为是在程序升级过程中我没debug,这种情况是因为二值信号量不能这么使用吗,我感觉这么用也没有语法错误这些啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

446

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4133
金钱
4133
注册时间
2018-5-14
在线时间
902 小时
发表于 2023-3-30 12:18:44 | 显示全部楼层
1:如果你的单个item的长度是1024,用500个长度的数据接收肯定是存在越界的,可能越界的内存正好没使用并未引发错误。如果是队列长度1024,单个item 1个字节就不存在问题。
2:先take再give。
回复 支持 1 反对 0

使用道具 举报

74

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2021-2-5
在线时间
133 小时
 楼主| 发表于 2023-3-30 14:57:07 | 显示全部楼层
姚先起 发表于 2023-3-30 12:18
1:如果你的单个item的长度是1024,用500个长度的数据接收肯定是存在越界的,可能越界的内存正好没使用并未 ...

谢谢,按照你说的验证了,都没问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 12:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表