当前位置: 首页 > news >正文

UART非阻塞式打印

# STM32 串口非阻塞式高效打印的底层实现(环形缓冲区 + 中断驱动)

以下是完整代码及讲解:

本案例基于cubemx生成的串口1,需引入头文件如下

## 一、定义环形缓冲区

head为写指针,tail为读指针

buffer缓冲区为8位原因:

## 二、 定义Log_Printf

一、 使用标准库vsprintf将可变参数解析至临时缓存

二、遍历字节,计算next_head检查队列是否满(若满则丢弃,防止覆盖)

三、USART1->CR1 |= USART_CR1_TXEIE;CR1寄存器第七位置1 手动设定USART1发送寄存器为空

手册描述如下:

## 三、 后台异步发送:USART1_IRQHandler中断驱动

一、第一层判断条件:

USART1->ISR & USART_ISR_TXE 寄存器描述如下:

ISR寄存器第七位置1表示发送寄存器未满(由硬件自动置1 / 0)

同时配合USART1->CR1 & USART_CR1_TXEIE在Log_printf中写的

USART1->CR1 |= USART_CR1_TXEIE来判断是否可以进行数据的发送

如果读写指针未重合,则写入TDR寄存器一字节,否则禁止发送

http://www.jsqmd.com/news/971590/

相关文章:

  • Seata 1.4.2 启动报错排查指南:内存调整、建表遗漏与Nacos配置导入的那些坑
  • 从光影到物理渲染:Substance Sampler 照片转材质
  • C语言多线程编程踩坑记:pthread_create传参类型不匹配的三种修复方案
  • 透镜重构人员轨迹技术 赋能煤矿全域透明智慧监管
  • 300多个即用型Shell脚本合集:从基础语法到远程操作、文件处理与算法实现
  • Spring AI对话记忆实战:Chat Memory详解和代码示例
  • Go 泛型简明教程
  • TensorFlow Serving:生产环境的模型推理服务方案
  • 告别手动操作:用一段VBS脚本实现Windows Explorer智能重启与文件夹恢复
  • 2026年空气净化器哪家靠谱? - myqiye
  • ArcGIS Pro新手必看:5分钟搞定土地利用TIFF转SHP矢量图(附广东遂溪案例)
  • Behance设计作品批量采集系统:多格式素材下载、高清原图提取与自动分类
  • 给程序员讲群论:用‘同构’和‘同态’理解API设计与微服务通信
  • 2026年行阅香坊东北旅游,住宿是星级酒店吗? - myqiye
  • 51单片机中断与定时器入门:手把手教你配置IE、TCON、TMOD寄存器(附代码)
  • 京东整店商品图片视频批量下载技术:从商品列表到自动分类
  • 数据结构:线性表之顺序表
  • 基于双向遍历和海绵结构的密码杂凑算法MadStorm设计原理详解
  • 避坑指南:解决Linux服务器安装Matlab 2018b时的‘sudo not found’和激活文件路径错误
  • 2026年华为云OpenClaw/Hermes Agent配置Token Plan搭建保姆教程
  • MAX17854ACB/V+T库存交期与储能BMS项目采购注意事项
  • HC-06蓝牙模块与12MHz晶振的51单片机通信避坑指南:如何计算并设置正确的波特率
  • 基于ARX结构的新型序列密码算法FlashLight
  • 数据分析对数学成绩偏弱学生报考大数据专业的作用
  • 弱口令与命令爆破 知识点总结
  • APK签名流程深度解析:安卓应用安全的核心保障
  • AD9361接收功能验证踩坑记:从官方配置软件到SPI脚本的完整避坑流程
  • 别再死记硬背了!一张图+Python脚本帮你彻底搞懂ISO15765-2网络层多帧传输与流控
  • 2026年资质齐全的样板间彩绘品牌企业推荐 - mypinpai
  • 题解:AtCoder AT_awc0085_a Tournament Elimination Round