0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32串口通信的重要性

hLf3_gh_c7d03a7 来源:STM32嵌入式开发 作者:STM32嵌入式开发 2021-08-24 14:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

刚开始学单片机的你,是不是会因用程序把LED点亮而感到高兴,会因用程序把数码管点亮而感到高兴。这是好事,这也是想继续学习下去的动力。

但是数据相关的实验是学习单片机和STM32的一道坎,此时就需要用好本文要说的串口这个调试工具。

串口通信介绍

关于串口通信的介绍,也可以点击阅读之前发的一篇文章。

STM32串口通信基本原理

串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。..。..这种太过理论了,看似懂了,但又不懂。还是用我笔者自己的话来说吧。

串口通信就是可以把程序在单片机或者STM32芯片中运行的结果发送到电脑的一种通信方式。

如何使用串口通讯,你需要知道的几个重要的知识点:

波特率,数据传输的速度,如上图设置为9600,那么程序中也要设置为9600

硬件连接,接收、发送交叉连接,如上图TxD-》RxD,RxD-》TxD

停止位

奇偶校验

硬件数据流

其中,后3项一般不需要改变。

学会串口通信能做什么

学过C语言的人都知道,程序开发需要不断调试不断验证。很多的语言编程软件都有很完整的程序调试功能。使用起来很方便。而我们的开发虽然也是用C语言,但我们的程序最终运行的环境不是在我们的开平台而是在真正的硬件系统中运行。这时想要查看程序的运行过程或者结果就不像编程软件那么方便了。

想要解决这个问题,我们这时就可以借助串口通信来把我们需要知道的结果又或者是程序运行的关键步骤发送到电脑上,我们就知道程序在硬件系统中运行是否出现问题。51单片机可以用串口来调试,STM32可以用串口来调试,Linux开发板也是使用串口来调试。

当你学会串口通信时,你可以开始玩WIFI模块、GSM模块、蓝牙模块、GPS模块、以及各种使用串口通信的传感器等等。有能力你还可以编写上位机软件通过串口通信来控制设备。

串口通信需要什么

如果你只有STM32核心板,那么你还需要一个串口转USB模块和一个串口数据接收软件还有几根杜邦线就可以了。

如果你的是比较完整的一款开发板的话,一般都已经带有串口转USB模块,这样使用起来就更简单了。聪明的你是不是发现还缺少了点什么,对。没错因为还缺少了最重要的程序。想要使用串口通信当然还需要写串口通信的程序。

下文就教你如何去用,而不是写。

串口实验

关于串口的实验,之前录过一个基于HAL库来实现的视频,可以点击查看。

STM32打印数据到串口助手

而下文中的实验基于标准库实现的,与HAL相比思路是一样的。

在做一个实验时,最好把这个实验分割成几个关键的步骤,这样做的好处就是可以清晰的知道自己需要做什么,以及做完了哪些。还有哪些还没做。

下面把串口实验分成几个关键的步骤:

1)串口通信使用到的GPIO引脚配置

STM32F103系列的芯片一般都有三个串口以上,用来调试使用的串口一般都是使用USART1。其他的串口配置都是一样的。

下面这段就是串口配置的程序:

GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟//USART1_TX GPIOA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA.9//USART1_RX GPIOA.10初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PA10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA.10

串口使用的的GPIO口是PA9和PA10,所以只需配置这两个IO口的输入输出模式就可以了。

2)串口主要参数设置(直接看程序)

USART_InitTypeDef USART_InitStructure;//USART 初始化设置USART_InitStructure.USART_BaudRate = bound;//串口波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;//数据格式,8位USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//收发模式USART_Init(USART1, &USART_InitStructure); //初始化串口1USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断

串口参数配置无非就是配置串口的波特率、数据格式、停止位、奇偶校验、硬件流、收发模式。除了波特率需要改变其他的参数都不需要管。直接复制拿来用。

3)串口中断配置

串口如果使用中断接收,那么就需要配置串口的中断参数,配置项无非就是配置那个的中断源和中断的优先级。

NVIC_InitTypeDef NVIC_InitStructure;//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器

4)串口使能

就是你需要什么时候开始使用串口功能,就是一句原有的函数。

USART_Cmd(USART1, ENABLE); //使能串口1

5)编写串口中断处理函数

使用库函数开发,所有的中断函数都是已经存在的,只是中断函数里面没有处理任何事情而已。中断函数如下:

完整的串口中断函数:

void USART1_IRQHandler(void){int Res=0; //定义一个变量用来接收串口数据集if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res =USART_ReceiveData(USART1); //读取接收到的数据 USART_SendData(USART1,Res ); //把接收到的数据通过串口1发送出去 }}

串口数据的接收和发送的函数都是库函数提供的,想用时只需找到它直接拿来用就可以了。

6)实验现象

把程序编译烧写到STM32然后用串口转USB模块连接到电脑,在串口调试工具设置好波特率,打开串口。正常的话,那发送什么到STM32单片机,串口工具上就会收到什么。

总结

以上就完成了一个最简单的串口实验。

本文章主要是说明串口的重要性,用来调试程序很方便。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675398
  • STM32
    +关注

    关注

    2313

    文章

    11206

    浏览量

    375253
  • 串口
    +关注

    关注

    15

    文章

    1629

    浏览量

    83565

原文标题:学习STM32单片机,绕不开的串口

文章出处:【微信号:gh_c7d03a7ab5ff,微信公众号:高速PCB硬件设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ESP32驱动YX5300/6300串口MP3音乐播放模块

    本文介绍了YX5300串口MP3音乐播放模块的基本特点,以及用ESP32开发板驱动YX5300模块播放音乐。
    的头像 发表于 05-23 09:41 31次阅读
    ESP32驱动YX5300/6300<b class='flag-5'>串口</b>MP3音乐播放模块

    高光谱视觉检测中光源的重要性

    高光谱视觉检测中光源的重要性
    的头像 发表于 03-20 17:31 234次阅读
    高光谱视觉检测中光源的<b class='flag-5'>重要性</b>

    2026年通信电源排行榜:选择最佳通信电源的重要性

    在如今的科技环境中,通信电源作为通信设备正常运行的重要组成部分,其稳定性和可靠直接影响到网络的性能和服务质量。2026年,随着技术的不断发展,市场上涌现出许多优秀的
    的头像 发表于 02-25 09:37 326次阅读
    2026年<b class='flag-5'>通信</b>电源排行榜:选择最佳<b class='flag-5'>通信</b>电源的<b class='flag-5'>重要性</b>

    STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口

    仅是一部分常用的基础指令,更多更仔细的指令或者函数可以访问陶晶驰资料官网。 硬件和接线 硬件需要一块STM32F103C8T6的开发板,杜邦线诺干,2.4寸串口屏一块 接线 串口STM32
    的头像 发表于 02-10 17:07 735次阅读
    <b class='flag-5'>STM32</b>驱动<b class='flag-5'>串口</b>屏,<b class='flag-5'>STM32</b>F103C8T6<b class='flag-5'>串口</b>发送指令控制HMI<b class='flag-5'>串口</b>屏

    串口调试步骤(适合免驱动的232串口设备)

    密码切换到root超级管理下 apt update 更新插件 apt-get install cutecom 安装系统自带的串口调试工具 cutecom 输入串口测试的指令会弹出一个图形界面如下图 32串口协议测试需要将第2和第
    的头像 发表于 12-17 17:23 1727次阅读
    <b class='flag-5'>串口</b>调试步骤(适合免驱动的232<b class='flag-5'>串口</b>设备)

    提升可靠,防水透气膜的多重功能的重要性

    提升可靠,防水透气膜的多重功能的重要性
    的头像 发表于 12-03 17:34 735次阅读
    提升可靠<b class='flag-5'>性</b>,防水透气膜的多重功能的<b class='flag-5'>重要性</b>

    UWB650串口测距通信定位模块规格书

    UWB650串口测距通信定位模块规格书
    发表于 11-03 17:40 3次下载

    园区智能照明系统的重要性

    技术和自动控制技术,对传统照明实现了彻底的范式革命。其重要性不仅体现在显著的节能效益上,更在于它为园区运营管理所带来的系统提升与战略价值。 一、 提升安全保障与视觉环境 1. 增强公共安全:系统可根据季节、天气
    的头像 发表于 09-19 14:01 547次阅读
    园区智能照明系统的<b class='flag-5'>重要性</b>

    关于stm32f4zgt6和mspm0g3507串口通信问题

    本人在使用stm32f4zgt6和mspm0g3507串口通信时出现问题,情况如下: m0芯片使用软件超时解析进行数据接收,使用标准库的transmit函数进行数据发送。 stm32使
    发表于 09-01 11:11

    120Ω的秘密:CAN总线终端电阻的重要性

    CAN总线作为一种广泛应用的工业通信协议,其终端电阻的作用不容忽视。本文将详细探讨CAN总线终端电阻的重要性及其在通信中的关键作用。CAN总线终端电阻的重要性CAN总线终端电阻顾名思义
    的头像 发表于 08-08 11:35 1662次阅读
    120Ω的秘密:CAN总线终端电阻的<b class='flag-5'>重要性</b>

    DTU的S485/232串口能够复用吗?

    想问一下,DTU的S485/232串口能够复用吗?就是窗口下面接很多传感器设备那种,主要是传感器数量过大,一个传感器接一台DTU太过于浪费。
    发表于 08-06 06:58

    STM32串口发送数据,USART_FLAG_TC无法置位怎么解决?

    STM32串口发送数据,在经过一段时间的数据发送,大概200ms发送一下,一次发送大概二三十个字节的数据,有可能会发生USART_FLAG_TC不置位的情况,如何解决或者避免?轮询发送,后卡在了
    发表于 07-29 11:44

    串口转网网关有哪些功能应用

    直接接入信息网络的痛点,同时支持多协议解析、边缘计算与安全防护等高级功能。 在工业自动化生产线上,大量设备如 PLC(可编程逻辑控制器)、传感器、仪表等仍采用串口通信,而上位机则是通过以太网进行
    的头像 发表于 07-17 17:10 1007次阅读
    <b class='flag-5'>串口</b>转网<b class='flag-5'>口</b>网关有哪些功能应用

    ESP32用作经典蓝牙串口透传模块与手机进行串口通信

    本文介绍了如何把ESP32用作一个蓝牙串口透传设备使用,其功能和常用的HC-05/06串口蓝牙设备一样。并与手机蓝牙串口APP进行双向蓝牙通信
    的头像 发表于 06-20 17:45 3590次阅读
    ESP32用作经典蓝牙<b class='flag-5'>串口</b>透传模块与手机进行<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    PCBA加工必看!BOM表的重要性大揭秘

    一站式PCBA加工厂家今天为大家讲讲PCBA加工中BOM表的内容和格式有什么要求?BOM表在PCBA加工中的重要性。在PCBA加工中,BOM表(物料清单)扮演着至关重要的角色,是连接设计与制造的重要
    的头像 发表于 06-18 10:15 1494次阅读