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

串口函数配置表

串口的初始化思路可以概括为“先硬件,后参数,再功能”。

这就像建立一条通信电话线:先铺设物理线路(硬件),再约定通话规则(参数),最后决定是单向通知还是双向对讲(功能)。遵循这个思路,可以确保串口稳定、可靠地工作。

🛠️ 第一步:配置硬件资源

这一步是为串口通信搭建物理基础,确保“路”是通的。

  1. 使能时钟这是所有操作的前提。MCU为了省电,默认会关闭大部分外设的时钟。你必须先开启:

    1. 串口外设时钟:例如,使用USART1就要使能USART1的时钟。

    2. GPIO端口时钟:串口的TX/RX引脚是复用在GPIO上的,所以也要开启对应GPIO端口(如GPIOA)的时钟。

    3. 特别注意:对于STM32F103,USART1挂载在APB2总线上,而USART2/3等挂载在APB1总线上,使能时钟时要使用不同的函数。

  2. 配置GPIO引脚将用于通信的物理引脚配置到正确的工作模式:

    1. TX (发送) 引脚:配置为复用推挽输出 (GPIO_Mode_AF_PP)模式。因为数据是由串口外设控制发出的,所以是“复用”功能。

    2. RX (接收) 引脚:配置为浮空输入 (GPIO_Mode_IN_FLOATING)上拉输入 (GPIO_Mode_IPU)模式。

⚙️ 第二步:设置通信参数

这一步是通信双方必须遵守的“通话协议”,任何一方不匹配都会导致通信失败或出现乱码。

需要配置一个核心参数结构体,主要包括:

  • 波特率 (Baud Rate):通信速率,单位是bps(比特每秒)。通信双方必须设置成完全一样的值,常见的有9600、115200等。

  • 数据位 (Word Length):每个数据包包含的有效数据位数,最常用的是8位

  • 停止位 (Stop Bits):表示一个数据包传输结束的标志,最常用的是1位

  • 校验位 (Parity):用于简单的错误检测,最常用的是无校验 (None)

  • 硬件流控制 (Hardware Flow Control):用于高速通信时防止数据丢失,一般低速通信选择无 (None)

配置好这些参数后,调用初始化函数将其写入串口寄存器,并使能串口外设,让它开始工作。

🚀 第三步:选择工作模式

这是最后一步,决定了你如何使用这个串口,主要有三种模式,灵活性和复杂度依次递增。

模式一:查询模式 (Polling)

CPU主动、持续地询问串口状态。实现简单,但会严重占用CPU资源。

模式二:中断模式 (Interrupt)

串口在收到数据或发送完成时,主动触发中断通知CPU。实时性好,CPU利用率高。需要额外配置NVIC(中断控制器)。

模式三:DMA模式 (DMA)

配置DMA作为“自动搬运工”,在串口和内存之间自动传输数据,无需CPU干预。极大解放CPU,适合大数据量传输。

📜 标准库代码函数配置表

下面以配置USART1为例,展示使用标准库进行初始化的核心代码和函数。

  1. 硬件配置代码

void USART1_HardwareInit(void) { GPIO_InitTypeDef GPIO_InitStructure; // 1. 使能时钟 // USART1在APB2总线,GPIOA也在APB2总线 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); // 2. 配置GPIO引脚 // TX引脚 (PA9) -> 复用推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // RX引脚 (PA10) -> 浮空输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); }
  1. 参数配置代码

void USART1_ParameterInit(void) { USART_InitTypeDef USART_InitStructure; // 3. 配置串口参数 USART_InitStructure.USART_BaudRate = 115200; // 波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 8位数据位 USART_InitStructure.USART_StopBits = USART_StopBits_1; // 1位停止位 USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 无流控 USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; // 同时使能发送和接收 // 4. 初始化USART1并使其工作 USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); }
  1. 功能模式配置代码 (以中断接收为例)

void USART1_InterruptConfig(void) { NVIC_InitTypeDef NVIC_InitStructure; // 5. 配置NVIC中断优先级 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // 6. 使能串口接收中断 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); }

标准库核心函数速查表

#星禾科技# #我在成都玩科技# #星禾星穗# #具身智能机器人# #编程#

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

相关文章:

  • 2026年穿墙螺杆生产厂家联系方式,丝杠/钢板止水带/止水钢板/不锈钢止水钢板/u型丝预埋件,穿墙螺杆源头厂家哪家好 - 品牌推荐师
  • 2026高考志愿填报核心技巧深度解析——一线实战视角全揭秘
  • 3步打造waifu2x-caffe轻量化部署方案:图像增强绿色版打包全流程
  • 从浮点到整数:深入解析QAT量化模型的推理计算机制
  • 2026全网首发:Claude Code 终端智能体系统底层架构拆解(附3万字PDF白皮书)
  • 设计租房改造无痕装饰片,不伤墙可移除,输出:租房党低成本,提升幸福感。
  • 如何快速掌握DREAM3D:材料科学数据分析的完整指南
  • 2025届必备的五大降重复率平台实测分析
  • [Flutter for OpenHarmony第三方库]Flutter for OpenHarmony 三重闯关踩坑实录:网络请求、列表刷新与底部导航的甜蜜冒险
  • 循环神经网络系列算法原理与数学表达研究 ——RNN、LSTM 与 BiLSTM
  • 如何解决微信QQ语音无法播放?Silk音频转换工具让跨设备播放不再难
  • 三维空间智能体体系技术方案:基于空间计算操作系统(SpaceOS™)的目标连续控制与空间智能体系构建方案
  • 从零到精通的Android Kotlin实战学习旅程:50个项目带你掌握移动开发核心技能
  • DL基础营 | 第P1周:Pytorch实现mnist手写数字识别
  • 【创作一周年纪念】365天的坚持:从《初识C语言》到现在的成长之旅,感谢遇见
  • 告别重复打卡:远程办公族的智能签到自动化解决方案
  • 《名称更改说明书》
  • 写程序职场工牌防刮耐磨套一体切割,输出:比淘宝款更贴合,更耐用。
  • Pytest参数化测试中文乱码?这2个隐藏技巧让你的测试报告清晰可读
  • 2025届必备的五大降AI率神器实测分析
  • SEO_新手必看的SEO完整入门指南与实战方法
  • 哈工大编译原理笔记:从“及格万岁”到“真香”的保姆级学习路线(附避坑指南)
  • 多账号登录兼容:让跨平台玩家实现无缝协作的Minecraft解决方案
  • 编写程序做耳机绕线器自适应切割,适配所有型号,输出:解决线材乱缠痛点,随身小物件。
  • maskgen使用教程
  • 快速原型实践:用快马一键生成手机端路由器管理登录界面
  • 数学期望
  • 基于 Redis 的分布式倒计时发令枪。
  • 让经典《魔兽争霸III》适配现代设备:WarcraftHelper使用指南
  • MouseClick:开源鼠标自动化工具从入门到精通