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

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

3天内不再提示

串口在STM32中的配置

麦辣鸡腿堡 来源:CSDN博客 作者:藕粉- 2023-11-10 16:09 次阅读

首先要明确几点:使用STM32串口外设中的哪一个?串口发送或者接收数据?串口相关的参数配置?发送或接收是否使用到中断?

下方为串口发送的配置。

1. RCC开启USART、串口TX/RX所对应的GPIO口

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //开启USART2的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //开启GPIOA的时钟

2. 初始化GPIO口

这里注意哈,根据自己的需求来配置GPIO口,发送和接收是都需要还是只需要其中一个。然后对应的根据引脚定义表来初始化对应的GPIO口。

USART2对应的引脚

![图片](//file1.elecfans.com/web2/M00/AD/80/wKgaomVN5C6ASwmnAACEGwhPI6Q875.jpg)

USART1对应的引脚

![图片](//file1.elecfans.com/web2/M00/AF/4D/wKgZomVN5C6AaiujAABzopcY4SM368.jpg)

这里根据手册来看,RX引脚模式配置成浮空输入或者上拉输入。TX引脚模式配置成复用推挽输出。

比如我这里只初始化TX发送端


//TX端
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; //USART2对应的TX端为GPIOA2
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50MhZ
GPIO_Init(GPIOA,&GPIO_InitStructure);

3. 串口初始化

注意哈,USART_Init()这个函数,是用来配置串口的相关参数的。

* USART_BaudRate 串口通信使用的波特率 一般是9600或者是115200,这里我们给9600
* USART_HardwareFlowControl 是否选择硬件流触发,一般这个我们也不选,所以选择无硬件流触发。
* USART_Mode 这个参数要注意了哈,串口的模式,发送模式还是接收模式,还是两者都有
* USART_Parity 校验位,可以选择奇偶校验和不校验。没有需求就直接无校验
* USART_StopBits 停止位 有1、0.5、2位,我们这里选1位停止位
* USART_WordLength 数据位 有8位和9位可以选择

//串口初始化
USART_InitTypeDef USART_InitStruct;
USART_StructInit(&USART_InitStruct); //初始默认值
USART_InitStruct.USART_BaudRate=9600;
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //不使用硬件流触发
USART_InitStruct.USART_Mode=USART_Mode_Tx; //TX 发送模式
USART_InitStruct.USART_Parity=USART_Parity_No; //不选择校验
USART_InitStruct.USART_StopBits=USART_StopBits_1; //停止位1位
USART_InitStruct.USART_WordLength=USART_WordLength_8b; //数据位8位
USART_Init(USART2,&USART_InitStruct);

4. 串口使能

//串口使能
USART_Cmd(USART2,ENABLE);

5. 串口发送数据

注意哈,我们要判断TXE标志位的状态。0,数据还没有被转移到移位寄存器;1,数据已经被转移到移位寄存器。

当TXE标志位为1时,就说明可以发送下一个数据了。详细过程可看上面串口发送的解释。

void Serial_SendByte(uint16_t Byte)
{
USART_SendData(USART2,Byte);
//0 表示数据还未转移到移位寄存器 循环等待 1 数据已经被转移到了移位寄存器可以发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); //不需要手动清零 再次写入TDR时会自动清零
}

经过上述五步的配置,单片机就可以通过串口发送数据了。

下方为发送数据图例,STM32向串口发送0x16数据

![图片](//file1.elecfans.com/web2/M00/AD/80/wKgaomVN5C6AehIXAADtGeauIak368.jpg)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2274

    文章

    10929

    浏览量

    358050
  • 时钟
    +关注

    关注

    11

    文章

    1750

    浏览量

    131909
  • 串口
    +关注

    关注

    14

    文章

    1563

    浏览量

    77254
  • 串口通信
    +关注

    关注

    34

    文章

    1628

    浏览量

    55788
收藏 人收藏

    评论

    相关推荐

    STM32F407 串口配置步骤

    介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。
    的头像 发表于 07-06 14:29 3482次阅读
    <b class='flag-5'>STM32</b>F407 <b class='flag-5'>串口</b><b class='flag-5'>配置</b>步骤

    关于 printf和scanf开发STM32配置和应用

    关于printf和scanf开发STM32配置和应用
    的头像 发表于 03-24 10:50 8142次阅读
    关于 printf和scanf<b class='flag-5'>在</b>开发<b class='flag-5'>STM32</b><b class='flag-5'>中</b>的<b class='flag-5'>配置</b>和应用

    STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化

    STM32CUBEMX配置教程(八)STM32串口轮询收发+重定义基于STM32H743VI使用STM3
    发表于 11-19 13:36 11次下载
    <b class='flag-5'>STM32</b>CUBEMX<b class='flag-5'>配置</b>教程(八)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>轮询发送中断接收+重定义+优化

    STM32F407的串口UART 基础配置STM32CubeMX

    STM32F407的串口UART 基础配置STM32CubeMX
    发表于 11-29 16:06 56次下载
    <b class='flag-5'>STM32</b>F407的<b class='flag-5'>串口</b>UART 基础<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32串口唤醒低功耗

    正常唤醒,但是唤醒之后,串口收发貌似就不正常了。 原因分析:串口进入低功耗之前,是把串口的接收引脚配置为了外部中断输入脚,唤醒之后再重新配置
    发表于 12-07 19:51 33次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>串口</b>唤醒低功耗

    STM32串口配置实验

    STM32 串口简介串口作为 MCU 的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。现在基本上所有的 MCU 都会带有串口ST
    发表于 12-08 12:21 11次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>配置</b>实验

    STM32使用CubeMAX配置串口中断接收方法

    STM32使用CubeMAX配置串口中断接收方法目录1.定位串口中断发生的地方2.处理串口中断接收的流程是:(1)初始化
    发表于 12-14 18:45 28次下载
    <b class='flag-5'>STM32</b>使用CubeMAX<b class='flag-5'>配置</b>的<b class='flag-5'>串口</b>中断接收方法

    STM32串口通信的基础知识

    STM32串口异步通信需要定义的参数奇偶矫正位如果GPIO作为串口,如何配置输入输出模式?异步串口通信框图讲解
    发表于 12-24 18:37 4次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b>的<b class='flag-5'>串口</b>通信的基础知识

    STM32 教你用串口配置所需详细步骤!!!

    相关寄存器:外设GPIO配置-USART串口配置一般步骤: 串口配置步骤小结:STM32
    发表于 12-24 18:44 16次下载
    <b class='flag-5'>STM32</b> 教你用<b class='flag-5'>串口</b>,<b class='flag-5'>配置</b>所需详细步骤!!!

    STM32CUBEMX配置教程(九)STM32串口DMA收发数据

    STM32CUBEMX配置教程(九)STM32串口DMA收发数据基于STM32H743VI使用STM32
    发表于 12-24 18:47 24次下载
    <b class='flag-5'>STM32</b>CUBEMX<b class='flag-5'>配置</b>教程(九)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>DMA收发数据

    5. STM32——串口发送字符、字符串 + printf 的重定向

    STM32——串口发送字符、字符串 + printf 的重定向基本框架1. 配置时钟:配置GPIO时钟、窗口时钟、引脚复用时钟2. 配置GP
    发表于 12-24 18:53 11次下载
    5. <b class='flag-5'>STM32</b>——<b class='flag-5'>串口</b>发送字符、字符串 + printf 的重定向

    STM32CubeMx配置DMA+串口空闲中断+FreeRTOS,完美处理串口数据。

    。使用DMA辅助处理串口的数据,能够大幅缓解单片机的运行压力,提高串口数据的处理能力。使用CubeMx配置串口+DMA+FreeRTOS,以下内容仅展示了主要涉及到的
    发表于 12-24 19:11 53次下载
    <b class='flag-5'>STM32</b>CubeMx<b class='flag-5'>配置</b>DMA+<b class='flag-5'>串口</b>空闲中断+FreeRTOS,完美处理<b class='flag-5'>串口</b>数据。

    STM32f103------串口中断及其配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档STM32f103------串口中断及其配置使能串口时钟和GPIO时钟配置
    发表于 12-27 19:30 22次下载
    <b class='flag-5'>STM32</b>f103------<b class='flag-5'>串口</b>中断及其<b class='flag-5'>配置</b>

    2021-04-17 STM32串口寄存器库函数配置

    STM32串口寄存器库函数配置方法STM32常用寄存器和库函数串口配置一般步骤(
    发表于 12-28 19:13 7次下载
    2021-04-17  <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>寄存器库函数<b class='flag-5'>配置</b>

    stm32串口烧录怎么设置

    准备工作 确保您拥有STM32开发板和相应的硬件设备,如USB转串口模块。 安装STM32CubeMX和STM32CubeProgrammer软件,这些是ST官方提供的工具,用于
    的头像 发表于 08-22 09:33 1947次阅读