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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版