IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32常见通信方式 -> 正文阅读

[嵌入式]STM32常见通信方式

通信介绍

  • 按照数据传送方向分别

单工:只在一个方向上传数据传输
半双工:允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输
全双工:允许数据同时在两个方向上传输

  • 串行通信的通信方式

同步通信:带时钟同步信号传输。SPl、I2C通信接口
异步通信:不带时钟同步信号。UART(通用异步收发器)

  • STM32的串口通信接口

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

一、串口通信

USAR1串口实验步骤

  • 常用的串口相关寄存器

USART_SR 状态寄存器
USART_ DR 数据寄存器
USAR1_ BRR 波特率寄存器
USAR1_CR1 控制寄存器

总结步骤

第一步:开启串口时钟,RCC_APB2PeriphClockCmd()
第二步:GPIO模式配置参数初始化,GPIO_Init();
第三步:串口配置参数初始化,USART_Init()
第四步:允许开启串口中断,USART_ITConfig()
第五步:配置NVIC中断优先级,NVIC_Init()
第六步:使能串口,USART_Cmd();
第七步:编写串口中断服务函数,void USART1_IRQHandler(void)

  • 开启串口时钟
    串口是挂载在 APB2 下面的外设,GPIO设置为复用模式,所以也要开始GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1) 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA) 
  • GPIO设置为复用模式
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init();
  • 串口配置参数初始化
	USART_InitStructure.USART_BaudRate = bound;//串口波特率
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
	USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
	USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式

	USART_Init(USART1, &USART_InitStructure); //初始化串口1
  • 允许开启串口中断
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);// 开启串口接受中断
  • NVIC 配置
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //通道
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 1 ;//抢占优先级1
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;		//子优先级1
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
  • 使能串口
USART_Cmd(USART1, ENABLE);
  • 编写串口中断服务函数
void USART1_IRQHandler(void)   
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:40:08  更:2021-08-01 14:41:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:19:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码