ARM Cortex-M4|非常好用的一种串口收发方式
  NTmDLNuEAIVy 2023年11月01日 114 0

  

  在这里分享项目中我经常使用的一种串口收发方式:阻塞发送 + 接收中断 +空闲中断 + 环形队列 

  项目代码地址:https://gitee.com/Mokun_gitee/stm32_hal_study.git

 

一、简介

  串口发送使用最简单的阻塞发送方式,一般来说都是接收的数据量比较大,发送数据用此方式即可。

  串口接收使用接收中断+空闲中断+FIFO,数据量一般的使用没有问题,若数据很大,考虑使用加上DMA来传输。

 

二、STM32CubeMX配置串口

  串口参数默认配置

 

  打开串口中断

 

  使用LL库进行开发

 

三、添加FIFO缓冲区

 

  编写FIFO数据结构,环形队列由数组实现,提供 入队、出队等接口给串口使用

 

 

四、重构串口接收中断

  编写BSP串口代码,自定义中断函数,提供给库中断调用,中断函数分别实现接收中断与空闲中断的相关操作

 

 

 

  在官方库的中断函数下添加自定义的中断处理函数

 

五、重构printf打印函数

  使用可变参数,重构串口收发

 

  串口自发自收测试

 

 

六、效果

  如图所示,2路串口同时自发自收,每500ms发送1024 byte 数据,无压力,理论可以支持的串口取决于MCU的串口数

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  bgxXjYYEVSxV   2024年05月17日   45   0   0 嵌入式
  bgxXjYYEVSxV   2024年05月17日   62   0   0 嵌入式
  swCWDMUCSvaI   2024年05月17日   56   0   0 嵌入式
  jEmNNF9D14iz   2024年05月17日   42   0   0 嵌入式
I2C
  bgxXjYYEVSxV   2024年05月17日   63   0   0 嵌入式
  jEmNNF9D14iz   2024年05月17日   41   0   0 嵌入式
  jEmNNF9D14iz   2024年05月17日   53   0   0 嵌入式
  jEmNNF9D14iz   2024年05月17日   48   0   0 嵌入式
PWM
  bgxXjYYEVSxV   2024年05月17日   46   0   0 嵌入式
NTmDLNuEAIVy