尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
STM32-USART 05
USART简介USART前置发送接送 双工可发送可接送 单工仅支持发送与接送的一种 全双工同时进行发送与接收 半双工同一时刻进行发送或者接收同步异步 同步时钟 异步波特率电平特性 单端信号引脚高低电平相对于GND 差分信号俩引脚电压差电平标准 定义数据1和数据0的表达方式是传输线缆中人为规定的电压与数据的对应关系 标准 TTL电平3.3V或5V表示10V表示0 RS232电平-3~-15V表示13~15表示0 RS485电平俩线压差2~6V表示1-2~-6V表示0注意RS485电平标准是差分信号抗干扰能力强信号传输距离远可达上千米 TTL电平RS232电平标准信号最远只能几十米串口助手 HEX发送与显示 字符发送与显示 GBK UTF-8发送与显示--no-multibyte-chars注意字符 通过ASCII码表 对应16进制数 字 通过GBK UTF-8表 对应16进制数 GBK发送还是UTF-8发送取决于IDE的编码格式USART定义根据发送数据寄存器的一个字节的数据自动生成数据帧格式,通过发送移位寄存器从TX引脚发送出去自动接收移位寄存器内的数据帧时序拼接成一个字节数据存放在接送数据寄存器中注意接收数据寄存器只能保存一个字节的数据生产者产生数据太快消费者来不及消费就会导致中断阻塞并且丢数据的情况USART波特率 决定传输一位的时间单字节协议帧格式 起始 单字节数据 停止时序 TX/RX起始产生一个下降沿 数据传输高低电平翻转 停止产生一个上升沿注意TX时序单片机控制 RX时序外挂模块控制stm32f103c8t6资源 USART1 USART2 USART3数据的传输 低位先行通信速率 USART14.5Mbps APB272M波特率分频得到USART函数USART初始化函数函数使用 函数USART_Init 入参USART 结构体指针 返回值无USART_InitTypedef结构体成员变量函数调用示例​USART使能函数函数使用 函数USART_Cmd 入参 USART ENABLE / DISABLE 返回值无函数调用示例USART_Cmd(USART1, ENABLE);USART发送单字节数据函数函数使用 函数USART_SendData 入参USART 单字节数据 返回值无函数调用示例uint8_t a 0x88; USART_SendData(USART1, a);注意写入DR硬件自动清除TXE标志位USART接收单字节数据函数函数使用 函数USART_ReceiveData 入参USART 返回值单字节数据函数调用示例uint8_t data USART_ReceiveData(USART1);注意读出DR硬件自动清除RXNE标志位USART中断配置函数函数使用 函数USART_ITConfig 入参USART 中断标志位 ENABLE/DISABLE 返回值函数调用示例USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //开启串口接收数据的中断USART标志位USART发送模块函数Serial_Init:RCC_APB2PeriphClockCmd RCC_APB2PeriphClockCmd GPIO_Init USART_Init USART_Cmdvoid Serial_SendArray(uint8_t *arr, uint16_t length)//串口发送数组 void Serial_SendArray(uint8_t *arr, uint16_t length) { for(uint16_t i 0; i length; i) { USART_SendData(USART1, arr[i]); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)); } }void Serial_SendString(char *str)//串口发送字符串 void Serial_SendString(char *str) { while(*str ! \0) { USART_SendData(USART1, *str); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)); str; } }printf重定向int fputc(int ch, FILE *f) { USART_SendData(USART1, ch); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)); return ch; }USART接收模块函数void Serial_Init(void)RCC_APB2PeriphClockCmd RCC_APB2PeriphClockCmd GPIO_Init //将PA9引脚初始化为复用推挽输出 GPIO_Init //将PA10引脚初始化为上拉输入 USART_Init USART_ITConfig NVIC_PriorityGroupConfig NVIC_Init USART_Cmd串口接收中断服务函数void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) SET) { //操作 } USART_ClearITPendingBit(USART1, USART_IT_RXNE); }
RELATED

相关推荐

第17篇_Client 06|chunked、关闭和 keep-alive 边界

第17篇_Client 06|chunked、关闭和 keep-alive 边界

适合谁收藏正在让 PLC 主动访问 HTTP 服务的工程师。需要处理请求构造、响应边界、超时与连接复用的人。希望把 Client 故障定位到确定状态和错误出口的读者。本篇位置 客户端篇,第 6/7 篇;主系列第 17/28 篇。现场问题同一个 API,用测试服务…

📅 2026/10/12 16:47:01
基于STM32与DS18B20的智能输液温度控制系统设计与仿真

基于STM32与DS18B20的智能输液温度控制系统设计与仿真

在医疗输液过程中,药液温度是一个至关重要的参数。冰冷的药液直接输入患者血管,不仅会引起不适,还可能诱发血管痉挛、寒战等不良反应,影响治疗效果。传统的输液加温方式如热水袋、电热毯等,存在温度控制不精准、安全性…

📅 2026/10/6 14:00:32
构建原生端侧Agent框架:从PalmClaw架构到移动AI应用实践

构建原生端侧Agent框架:从PalmClaw架构到移动AI应用实践

1. 从“云端依赖”到“端侧自主”:为什么我们需要一个原生设备上的Agent框架? 最近在折腾手机上的AI应用,一个绕不开的痛点就是:但凡想搞点稍微复杂点的自动化任务,比如自动整理相册、根据日程安排自动调整手机模式&am…

📅 2026/10/6 7:59:36
MORE NEWS

更多资讯

📰

MBA培训管理系统用户批量操作实现方案

1. 项目概述MBA培训管理系统作为面向高端教育机构的管理工具,其用户管理模块的核心痛点在于如何高效处理批量操作。我在实际开发中发现,当系统用户量突破500人时,传统的单条操作模式会导致管理员每周额外花费3-4小时处理基础维护工作。本文将…

📰

SpringBoot+MySQL真实投票系统:RBAC权限与事务防刷实战

简介:这是一套面向计算机专业本科生的高分毕业设计实战资源,基于SpringBoot构建的完整投票系统,适用于毕设开发、课程设计及Java全栈项目练手。资源包含可直接部署运行的源码工程、配套MySQL数据库脚本及详细说明文档,覆盖用户管理…

📰

AutoCAD .NET API插件开发:用C#实现图形自动化与批处理

简介:面向C#开发者的AutoCAD .NET插件开发辅助库,以模块化封装方式降低原生API调用门槛,适合需要实现参数化绘图、图层批量管理、几何数据交互及自定义界面等二次开发场景。压缩包共61个文件,以C#源码、DLL动态库、XAML界面文件及…

📰

千万级数据查询优化:索引原理与实战调优

1. 项目概述:千万级数据查询的性能挑战在数据驱动的时代,数据库查询性能直接关系到业务系统的响应速度和用户体验。我曾接手过一个电商平台的订单系统优化项目,当数据量突破800万条时,原本流畅的查询操作开始出现明显延迟&#xf…

📰

OpenMontage:开源自动剪辑工具,让海量素材轻松变成成片

OpenMontage 这个名字,我第一次看到的时候还以为是某个修图软件的变体,后来实际用了一周才反应过来:它本质上是一个面向视频粗剪和自动合成场景的开源工具。说白了,就是你手头攒了一堆拍摄素材、直播切片或者监控片段,…

📰

毕业论文全流程AI工具实战指南

1. 毕业生论文写作全周期AI工具指南作为指导过上百篇毕业论文的导师,我深刻理解从开题到答辩每个环节的痛点。今天这份清单不是简单罗列工具,而是结合论文写作全流程的实战解决方案。不同于市面上泛泛而谈的推荐,这里每个工具都经过我和学生团…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬