霜咬回响 发表于 2025-7-30 20:56

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

在做一个串口shell的小任务。我看开源的shell库都是使用的中断方式,每个字节接收一次。然后,把数据放入到环形队列里面,再在while(1)中处理消息。

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

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

哪里需要我了 发表于 2025-8-1 11:41

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

咖啡色牛奶 发表于 2025-8-1 16:39

一般小工程 这两种都可以,如果是复杂的工程,中断太多确实会增加你编程的复杂度。DMA的话,可以有效的减少串口的中断。
页: [1]
查看完整版本: 各位在项目里面对于串口接收采用的是中断方式,还是DMA方式啊?