文章目录

  • USART 简介
  • USART的功能运用
    • USART的配置
    • USART接收发送
    • USART 接收字节数据点灯

USART 简介

什么是UART?–>串口
作用:两个设备/器件之间进行信息交换
例子:MCU与WIFI通信,MCU与PC通信,MCU与传感器通信
通信是产品的核心
UART其实通信协议,是一种标准的通信协议,需要遵守这种通信协议才能正常通信

UART四要素

波特率:控制通信速度 常用波特率 115200 9600
停止位:表示一帧数据的起始 1bit
数据位:5~8位可选
奇偶校验:默认无校验位

USART的功能运用

USART的配置

void Usart_config(u32 bps){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//开启复用接口的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//开启串口1的时钟GPIO_InitTypeDef GPIO_InitStruct;GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //设置PA9为USART1的复用接口GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//设置PA10为USART1的复用接口GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//设置gpio口为复用模式GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽模式GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;//pin9,pin10GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;//浮空GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;//高速GPIO_Init(GPIOA,&GPIO_InitStruct);//gpio初始化USART_InitTypeDef USART_InitStruct;USART_InitStruct.USART_BaudRate = bps;//这里的bps为初始化函数可以填入的bpsUSART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//不使用硬件流控制USART_InitStruct.USART_Mode = USART_Mode_Rx|USART_Mode_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(USART1,&USART_InitStruct);//串口初始化NVIC_InitTypeDef NVIC_InitStructure_usart;NVIC_InitStructure_usart.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure_usart.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure_usart.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure_usart.NVIC_IRQChannelSubPriority = 2;NVIC_Init(&NVIC_InitStructure_usart);//初始化中断USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//打开接收中断USART_Cmd(USART1,ENABLE);//启动串口
}

USART接收发送

/*
函数:发送一个字节数据
形参 u8 data
返回值 void
*/
void usart1_send_byte(u8 data)
{while(!USART_GetFlagStatus(USART1,USART_FLAG_TXE)) {}  //假如没有收到USART_SendData(USART1,data);
}/*
函数:接收一个字节数据
形参 void
返回值 u8
*/
u8 usart1_rec_byte(void)
{while(!USART_GetFlagStatus(USART1,USART_FLAG_RXNE))        {}return USART_ReceiveData(USART1);
}

USART 接收字节数据点灯

本学习之路
已弃坑,原因大致就是自己学会了不少东西,但是却懒得花时间再次重复一遍,以后可能会发更多的发一些自己认为特别一些的内容,就不再重复造别人已经造过很多次的轮子了。

2022/11/9 KVG

【STM32f401学习之路-02】USART串口通信相关推荐

  1. STM32平台的USART串口通信

    本文目的是编写stm32串口通信程序,实现stm32上电自动循环发送hello LYJ!!!,并可通过上位机控制stm32串口发送与否.通过亲自做一下USART串口通信实验,学习如何使用stm32平台 ...

  2. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)

    USART 串口通信配置步骤 在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对 USART 进行配置.这个也是在编写程序中必须要了解的.具体步骤如下:(USART 相关 ...

  3. Docker学习之路02:阿里云镜像加速器

    阿里云镜像加速器 Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学习之路03:Docker的常用命令 Docker ...

  4. STM32F103ZET6+USART+串口通信

    STM32F103ZET6+USART+串口通信 一. 通信概述 通信就是数据交换.信息交换.嵌入式系统中,微控制器与其他外围设备相互连接,系统各部件之间进行数字信号/数据的传输就是通信,无论是大型嵌 ...

  5. STM32CubeMX实现USART串口通信

    文章目录 一.实验环境 二.STM32CubeMX的安装 三.使用STM32CubeMX完成串口通信 1. 安装固件库 2.工程设置 四.USART串口通信 1. UART函数库介绍 2.代码编写 3 ...

  6. USART串口通信实验

    整理自:正点原子PPT 文章目录 串口简介 串口通信基本原理 常用串口相关寄存器 串口操作相关函数 硬件连接 串口配置一般步骤 例程参考 升级版 串口简介 详情见STM32F4开发指南 串口通信基本原 ...

  7. STM32 USART—串口通信

    目录 一.串口通信协议物理层电平标准: 1.RS232标准: 2.USB转串口通讯(常用) 3.原生的串口到串口 二.串口通信协议软件层: 三.串口功能框图 1.引脚 2.数据寄存器USART_DR ...

  8. ros和java通讯_ROS学习之路(二)——通信架构(上)

    1. master&&node mater中文名又称为节点管理器,作为管家管理所需要的进程,其作用有两个: 每个node启动时都要向master注册. 管理node之间的通信. nod ...

  9. 【蓝桥杯】单片机学习(7)——UART串口通信

    UART串口通信 一.基础知识介绍 1.通信方式的分类 2.RS232通信接口 3.UART模块介绍 (1)串口控制寄存器SCON(可位寻址) (2)电源控制寄存器PCON(不可位寻址) (3)辅助寄 ...

  10. STM32的USART串口通信小程序

    文章目录 前言 一.串口协议和RS-232.485标准 1.串口通信协议的概念 2.常用协议 2.1 RS-232 2.2 RS-485 3.RS232.485电平与TTL电平的区别 二.STM32的 ...

最新文章

  1. php拍照从手机相册中选择,Android获取图片:拍照和从相册中选择
  2. sleep函数_MySQL中的sleep函数介绍
  3. CF467C George and Job
  4. IT人士的知识管理-第一篇
  5. 一个函数处理同个元素多个事件行为------event.type
  6. jQuery——插入元素节点的方法
  7. MacOS下如何通过命令搜索文件和打开文件
  8. 数据结构教程网盘链接_数据结构101:链接列表
  9. django设置超级管理员_Django的简介与安装
  10. 封装和@property
  11. python股票交易微信提醒_python实现秒杀商品的微信自动提醒功能(代码详解)
  12. poj1691 Painting A Board
  13. wps如何将字体竖着排列_如何在短时间内,使自己的字看起来更舒服?
  14. python 主函数传参数
  15. 嵌入式实操----基于RT1170 首板硬件之CAN BUS TJA1043显示调试(十八)
  16. libmp4v2的编译及简单DEMO
  17. 计算机在英语翻译上的运用,有道如何在网页上翻译一句话,有道网页上的字翻译怎么用...
  18. 在图片上添加文字并生成图片
  19. 如何挽救婚姻?不想离婚就做好这8个方面,分分钟留下她
  20. SQL注入:SQL注入类型(手动)SQL注入的检测

热门文章

  1. 计算机加入域无法访问登录,不加入域不能访问域资源
  2. python 隐藏excel的列和行
  3. java Base64带秘钥的加密解密
  4. Markdown中插入excel表的简便方法
  5. matlab如何选局部最大值,如何在MATLAB中的图像中找到局部最大值?
  6. 10大主流性能测试工具,总有一款适合你
  7. 笔记本触摸板手势使用
  8. PTCMS可听书可下载的小说站源码+带采集和教程
  9. java 下划线 变量_Java数值类型变量带下划线
  10. LSB算法的改进matlab版