打印
[AT32F407]

各位在项目里面对于串口接收采用的是中断方式,还是DMA方式啊?

[复制链接]
176|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
霜咬回响|  楼主 | 2025-7-30 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做一个串口shell的小任务。我看开源的shell库都是使用的中断方式,每个字节接收一次。然后,把数据放入到环形队列里面,再在while(1)中处理消息。

我个人觉得有点冗余,如果使用了开源库,也没有办法编写软件著作权。

倒不是要把简单问题复杂化,shell小任务的数据量也不大,吞吐量也很普通,使用DMA看上去是有点复杂,但应该也在我的技术能力范围内。想问问大家如何实现的?有什么好的建议不?

使用特权

评论回复
沙发
哪里需要我了| | 2025-8-1 11:41 | 只看该作者
中断或者DMA我都用过,都行吧,只是底层的区别
我感觉大体接收流程都类似:底层接收数据放到FIFO/环形缓冲区,接收的线程一个状态机提取缓冲区内整包数据,再根据协议内容解析实现功能就好了。
什么开源库软件著作权这还真不了解,还要求写专利软著这么麻烦的吗

使用特权

评论回复
板凳
咖啡色牛奶| | 2025-8-1 16:39 | 只看该作者
一般小工程 这两种都可以,如果是复杂的工程,中断太多确实会增加你编程的复杂度。DMA的话,可以有效的减少串口的中断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

25

帖子

0

粉丝