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

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

3天内不再提示

STM32入门学习笔记之USART驱动实验(下)

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 10:08 次阅读

6.2.4 状态寄存器USART_SR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CTS LBD TXE TC RXNE IDLE ORE NE FE PE

Bit 9:CTS标志(如果设置了CTSE位,当nCTS输入变化状态时,该位被硬件置高,由软件将其清零)

0:nCTS状态线上没有变化

   1:nCTS状态线上发生变化

Bit 8:LIN断开检测标志(当探测到LIN断开时,该位由硬件置1,由软件将其清零)

0:没有检测到LIN断开

   1:检测到LIN断开

Bit 7:发送数据寄存器空

当TDR寄存器中的数据被硬件转移到移位寄存器时,该位被硬件置位,对USART_DR的写操作,将该位清零。

   0:数据还没有被转移到移位寄存器

   1:数据已经被转移到移位寄存器

Bit 6:发送完成

当包含有数据的一帧发送完成后,并且TXE=1时,由硬件将该位置’1’。然后写入USART_DR清除该位。

   0:发送还未完成

   1:发送完成

Bit 5:读数据寄存器非空

当数据被转移到USART_DR寄存器中,该位被硬件置位。对USART_DR读操作可以将该位清零。

   0:数据没有收到;

   1:收到数据,可以读出

Bit 4:检测到总线空闲

当检测到总线空闲时,该位被硬件置位,则产生中断。先读USART_SR,然后读USART_DR清除该位。

   0:没有检测到空闲总线

   1:检测到空闲总线

Bit 3:过载错误

当RXNE仍然是1的时候,当前被接收在移位寄存器中的数据,需要传送至RDR寄存器时,硬件将该位置位,先读USART_SR,然后读USART_CR清零。

   0:没有过载错误

   1:检测到过载错误

Bit 2:噪声错误标志

在接收到的帧检测到噪音时,由硬件对该位置位。先读USART_SR,再读USART_DR清0。

   0:没有检测到噪声

   1:检测到噪声

Bit 1:帧错误

当检测到同步错位,过多的噪声或者检测到断开符,该位被硬件置位。先读USART_SR,再读USART_DR清零

   0:没有检测到帧错误

   1:检测到帧错误或者break

Bit 0:校验错误

在接收模式下,如果出现奇偶校验错误,硬件对该位置位。依次读USART_SR和USART_DR清零,在清除PE位前,软件必须等待RXNE标志位被置1。

   0:没有奇偶校验错误;

   1:奇偶校验错误

6.3 printf函数重映射

学习C语言的时候会经常用到一个函数,就是格式化输出printf,这个函数的源代码如下所示。

图片

从上图可以看出来,printf函数实际上的核心是putchar函数,在KEIL中,由于我们使用了MicroLIB,所以putchar函数改为了fputc函数,此时,我们只需要修改fputc函数就可以完成printf重定向,重定向代码如下图所示。

图片

6.4 串口例程

使用printf函数将串口接收到的字符串发送出去。

(1)底层寄存器文件stm32f10x.h添加串口寄存器地址。

图片

图片

图片

(2)在SYSTEM目录下新建usart1目录,并在usart1目录下新建usart1.c和usart1.h两个文件。

图片

(3)将usart1.c和usart1.h两个文件加入工程。

图片

图片

(4)在usart1.c文件内写入以下代码。

图片

图片

(5)在usart1.h添加以下代码。

图片

(5)在1.c文件中添加以下代码。

图片

6.5 实验结果

图片

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

    关注

    6037

    文章

    44557

    浏览量

    635171
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355943
  • USART
    +关注

    关注

    1

    文章

    195

    浏览量

    30850
收藏 人收藏

    评论

    相关推荐

    小白高手都适用,STM32学习教程(入门合集、自学笔记和例程)

    STM32入门教程资料合集:主要内容为STM32入门教程资料合集免费下载包括了:,《USART串口编程》,《如何安装J-Link
    发表于 04-10 14:56

    CubeMX入门STM32 HAL库的学习笔记

    STM32CubeMX是ST官方开发的一款很好用的软件,主要用于STM32系列单片机的硬件驱动层的配置。网上也有一些关于STM32CubeMX的相关教程,对它的相关操作进行说明。从今天
    发表于 08-17 06:55

    STM32入门学习笔记 精选资料分享

    STM32入门学习笔记本文为笔者入门学习过程的记录,只是零散的记录了一些个人不太懂得,觉得需要经
    发表于 08-24 07:56

    AN2557_STM32F10xxx使用USART的应用中编程

    STM2TAN2557_STM32F10xxx使用USART的应用中编程,很好的stm32资料,快来学习吧,免费的哦。
    发表于 04-26 09:43 14次下载

    STM32AN2582_STM32F10xxx USART应用

    STM32AN2582_STM32F10xxx USART应用实例,很好的STM32资料,快来学习
    发表于 04-26 09:51 27次下载

    STM32各模块学习笔记

    STM32个模块学习笔记 目录 STM32笔记之一 中断优先级.......................................
    发表于 11-30 03:32 3160次阅读

    STM32笔记USART串口通信

    关于STM32学习分享第五章 USART串口通信文章目录关于STM32学习分享前言二、代码1.usart
    发表于 11-21 18:21 13次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>USART</b>串口通信

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发
    发表于 11-30 12:36 4次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>1——软硬件基础<b class='flag-5'>之</b>keil5编程与GPIO开发

    usart学习笔记

    学习笔记USART介绍:目的:使用USART进行通信,收发数据更多介绍:stm32_CN -> p516页框图:中断请求:T
    发表于 12-04 17:21 10次下载
    <b class='flag-5'>usart</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    STM32USART窗口通讯程序

    !”,上位机接收程序可以使用“串口调试助手“,也可自己编程。3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。实验步骤安装usb转串口的
    发表于 12-07 11:06 3次下载
    <b class='flag-5'>STM32</b>的<b class='flag-5'>USART</b>窗口通讯程序

    STM32学习STM32cubeMX软件安装与使用(附STM32cubeMX5.2.1载地址)

    STM32学习STM32cubeMX软件安装与使用(附STM32cubeMX5.2.1载地址
    发表于 12-07 11:51 28次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>之</b><b class='flag-5'>STM32</b>cubeMX软件安装与使用(附<b class='flag-5'>STM32</b>cubeMX5.2.1<b class='flag-5'>下</b>载地址)

    16 . USART 串口通信实验

    USART 串口通信实验我们知道STM32F1 内部含有非常多的通信接口,我们就来学习USART
    发表于 12-20 19:22 20次下载
    16 . <b class='flag-5'>USART</b> 串口通信<b class='flag-5'>实验</b>

    STM32USART串口配置——学习笔记(5)

    文章内容根据野火学习教程进行整理,仅仅是学习记录。开发板: 野火STM32F429-挑战者V2官方固件库版本: STM32F4xx_DSP_StdPeriph_Lib_V1.8.0一、
    发表于 12-28 19:00 0次下载
    <b class='flag-5'>STM32</b>的<b class='flag-5'>USART</b>串口配置——<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(5)

    STM32CubeMX与HAL库学习--ADC与USART的简单练习

    ,打算简单的用一,其实我就是把ADC的值读一再算一就用USART发送出去。本文是学习过程的一点记录。使用到的工具及版本:
    发表于 01-12 20:27 13次下载
    <b class='flag-5'>STM32</b>CubeMX与HAL库<b class='flag-5'>学习</b>--ADC与<b class='flag-5'>USART</b>的简单练习

    STM32入门学习笔记USART驱动实验(上)

    串口无法正常收发,但是如果使用11.0592MHz晶振又会存在定时器计数误差(即定时器计数不准确),在STM32中很好地解决了这个问题,并且扩展了串口的应用。
    的头像 发表于 02-16 10:08 681次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>USART</b><b class='flag-5'>驱动</b><b class='flag-5'>实验</b>(上)