你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

freertos,串口接收数据后如何发送给任务?

[复制链接]
any012 提问时间:2017-1-17 15:49 /
悬赏10ST金币已解决
本帖最后由 any012 于 2017-1-17 15:52 编辑

正在学freertos。串口中断接收一帧数据后,放到数组里,如何将数据发送给任务呢?

如果用消息队列,是否建立的消息队列需要是数组类型的?还是说消息列表建立成uint8类型的,列表长度设为接收数据最大长度?

如果用二值信号量,是不是就等于是中断程序接收完后发送信号量通知任务处理数组?这样的话,在任务处理过程中,串口又接收到新的数据怎么办?


其他还有什么办法呢?


最佳答案

查看完整内容

可以使用消息队列,发送的是内存的地址就行,其实楼主可以考虑这种情况,就是做一个fifo,中断只管接收数据放到fifo中,再建立一个任务用来读取fifo中的数据,再把读取的数据分配给其他任务,这样就可以保证线程的安全性,尽量保证这个读取fifo数据任务的优先级要高,才能在退出中断时立即处理数据 ...
收藏 1 评论20 发布时间:2017-1-17 15:49

举报

20个回答
黑皮男 回答时间:2017-1-17 15:49:38
可以使用消息队列,发送的是内存的地址就行,其实楼主可以考虑这种情况,就是做一个fifo,中断只管接收数据放到fifo中,再建立一个任务用来读取fifo中的数据,再把读取的数据分配给其他任务,这样就可以保证线程的安全性,尽量保证这个读取fifo数据任务的优先级要高,才能在退出中断时立即处理数据

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

斜阳__ 回答时间:2017-1-17 16:03:51
邮箱,队列,共享存储区都可以;甚至自己搞个全局变量存储也行,但是要保证多线程安全

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

any012 回答时间:2017-1-17 16:07:04
斜阳__ 发表于 2017-1-17 16:03
邮箱,队列,共享存储区都可以;甚至自己搞个全局变量存储也行,但是要保证多线程安全 ...

现在只看到了消息队列和信号量。
邮箱和共享存储区,还没看到呢。

全局变量存储的话,是否就是用信号量来通知任务?

如果用队列来实现的话,队列应该创建为什么类型的?
中山无雪 回答时间:2017-1-17 16:42:36
创建两个任务,一个接收一个发送

创建一个全局变量或消息队列

使用队列在接收方采用阻塞接收,使用全局变量可以选用信号量同步

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zhangxu56726 回答时间:2017-1-17 16:45:18
用malloc申请一片内存,保存数据,然后将地址传递给消息队列,在线程里拿到数据后,释放就OK了

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

any012 回答时间:2017-1-17 17:00:52
中山无雪 发表于 2017-1-17 16:42
创建两个任务,一个接收一个发送

创建一个全局变量或消息队列

接收用的中断方式,没法放在任务里吧?
使用信号量的话,我担心任务还没处理完数据,又有新的串口中断来改变数据了。
队列的话,不知道队列应该是什么类型的?
any012 回答时间:2017-1-17 17:02:24
zhangxu56726 发表于 2017-1-17 16:45
用malloc申请一片内存,保存数据,然后将地址传递给消息队列,在线程里拿到数据后,释放就OK了 ...

不懂malloc申请内存,搜索了下,貌似是动态内存分配。
以后有空再学习下。
黑皮男 回答时间:2017-1-17 19:09:04
zhangxu56726 发表于 2017-1-17 16:45
用malloc申请一片内存,保存数据,然后将地址传递给消息队列,在线程里拿到数据后,释放就OK了 ...

我当时玩FreeRTOS时就有这个想法,但是FreeRTOS的malloc不可以在中断中使用,如果在中断中使用malloc要保证malloc的线程安全性。
ts2000 回答时间:2017-1-18 08:30:46
进来学习一下。。。
123下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版