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

初学stm32 ——— 串口通信

目录

STM32的串口通信接口

UART异步通信方式特点:

串口通信过程

STM32串口异步通信需要定义的参数:

 USART框图:

 常用的串口相关寄存器

串口操作相关库函数

 ​编辑

串口配置的一般步骤


STM32的串口通信接口

  • UART:通用异步收发器
  • USART:通用同步异步收发器

        大容量STM32F10x系列芯片,包含3个USART和2个UART;(USART可以设置成UART,所有有5个UART)

UART异步通信方式引脚连接方法:

RXD:数据输入引脚。数据接收

TXD:数据发送引脚。数据发送

图1 UART串口引脚连接方式

 

STM32F103芯片的5个串口对应的引脚号:

串口号

RXD

TXD

1

PA10

PA9

2

PA3

PA2

3

PB11

PB10

4

PC11

PC10

5

PD2

PC12

UART异步通信方式特点:

  • 全双工异步通信
  • 分数波特率发生器系统,提供精确的波特率。发生和接收共用的可编程波特率,最高可达4.5Mbit/s
  • 可编程的数据子长度(8位或者9位)
  • 可配置的停止位(支持1或者2位停止位)
  • 可配置的使用DMA多缓冲器通信。
  • 单独的发送器和接收器使能位。
  • 检测标志:1 接收缓冲器  2发送缓冲器空  3传输结束标志
  • 多个带标志的中断源。触发中断。
  • 其他:校验控制,四个错误检测标志。

串口通信过程

图2 串口通信过程

STM32串口异步通信需要定义的参数:

  1. 起始位
  2. 数据位(8位或者9位)
  3. 奇偶校验位(第9位)
  4. 停止位(1,15,2位)
  5. 波特率设置
图3 传输数据格式

 USART框图:

 常用的串口相关寄存器

  • USART_SR状态寄存器
  • USRAT_DR数据寄存器
  • USRAT_BRR波特率寄存器

串口操作相关库函数

void USART_Init();//串口初始化:波特率,数据字长,奇偶校验,硬件流控制以及收发使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断void USART_SendData();//发送数据到串口,DR
uint16t USART_ReceiveData();//接收数据,从DR读取接收到的数据FlagStatus USART_GetFlagStatus();//获取状态标志位
void USART_ClearFlag();//清除状态标志位
ITStatus USART_GetITStatus();//获取中断状态标志位
void USART_ClearITPendingBit();//清除中断状态标志位

 

 

串口配置的一般步骤

①串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();

②串口复位:USART_DeInit();这一步不是必须的

③GPIO端口模式设置:GPIO_Init();模式设置参考STM32中文参考手册8.1.11外设GPIO配置

④串口参数初始化:USART_Init();

⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤):

        NVIC_Init();

        USART_ITConfig();

⑥使能串口:USART_Cmd();

⑦编写中断处理函数:USARTx_IRQHandler();

⑧串口数据收发:

void USART_SendData();//发送数据到串口,DR

uint16_t USART_ReceiveData();//接收数据,从DR读取接收到的数据

⑨串口传输状态获取:

FlagStatus USART_GetFlagStatus(UASRT_typeDef* UASRTx uint16_t USART_FLAG);

void USART_ClearITPendingBit(UASRT_TypeDef* UASRT, uint16_t USART_IT);

http://www.lryc.cn/news/506442.html

相关文章:

  • qwt 多Y轴 项目效果
  • Java中通过ArrayList扩展数组
  • Java:链接redis报错:NoSuchElementException: Unable to validate object
  • datasets库之load_dataset
  • React Router常见面试题目
  • sequelize-cli 封装登录接口
  • 使用 Elasticsearch 查询和数据同步的实现方法
  • QTday1作业设置简易登录界面
  • RC低通滤波器和LR低通滤波器,LC低通滤波器该怎么选择
  • 芯旺微KF32A156芯片ADC配置
  • 【Token】校验、会话技术、登录请求、拦截器【期末实训】实战项目学生和班级管理系统\Day15-后端Web实战(登录认证)\讲义
  • [Unity Shader] 【游戏开发】【图形渲染】Shader数学基础3:矢量与标量的乘法与除法详解
  • javalock(四)AQS派生类之Semphore逐行注释
  • 【C语言】头文件”“和<>的详解
  • Elasticsearch:什么是信息检索?
  • Spark-Streaming容错语义
  • 2024年12月陪玩系统-仿东郊到家约玩系统是一种新兴的线上预约线下社交、陪伴系统分享-优雅草央千澈-附带搭建教程
  • GUI07-学工具栏,懂MVC
  • 【进程篇】04.进程的状态与优先级
  • ElasticSearch 数据聚合与运算
  • 科研学习|论文解读——智能体最新研究进展
  • 面试小札:Java后端闪电五连鞭_8
  • java error(2)保存时间带时分秒,回显时分秒变成00:00:00
  • 计算机毕业设计python+spark+hive动漫推荐系统 漫画推荐系统 漫画分析可视化大屏 漫画爬虫 漫画推荐系统 漫画爬虫 知识图谱 大数据毕设
  • 数字IC后端设计实现篇之TSMC 12nm TCD cell(Dummy TCD Cell)应该怎么加?
  • (8)YOLOv6算法基本原理
  • LNMP+discuz论坛
  • 在linux系统的docker中安装GitLab
  • Python面试常见问题及答案12
  • 从0-1开发一个Vue3前端系统页面-9.博客页面布局