STM32基础教程 p19 UART通信初始化及其单个字符发送代码

1 UART的应用场景

1:

2:

RS232和RS485通信协议介绍

3:
举例:PM2.5灰尘度的传感器

2 stm32的UART口




UART:异步通信

USART:同步通信

3 UART 代码实现

通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准 NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。USART 利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信。它也支持 LIN(局部互连网),智能卡协议和 IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的 DMA 方式,可以实现高速数据通信。

一共两步骤:

  1. 开启UART口挂载在的时钟总线(因为UART,用到PA9和PA10的时钟,因此在用到UART时也要开启GPIOA口的时钟,配置PA9和PA10,应为这里PA9是接受,PA10是发送,这就就不能配置成普通的GPIO口输出功能,PA9配置成复用功能)
  2. void RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART, ENABLE);//使能APB2外设时钟
  3. 配置UART口

3.1 配置GPIOA口的功能(PA9和PA10分开配置)

javascript 复制代码
// An highlighted block
void GPIO_Init( )
{
GPIO_InitTypeDef GPIO_InitStructure; //PA9配置口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
GPIO_Init(GPIOA, &GPIO_InitStructure); 
GPIO_InitTypeDef GPIO_InitStructure; //PA10配置口(PA10接受)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); 

3.2 UART口寄存器

3.3 UART库函数

c 复制代码
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)

配置UART口

原理:有一个外设,就有一个啥样的结构体

javascript 复制代码
// An highlighted block
USART_InitTypeDef USART_InitStructure; //UART的结构体
USART_InitStructure.USART_BaudRate = 9600; //UART的波特率,两个通信主板波特率要一致
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位长度
USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位长度
USART_InitStructure.USART_Parity = USART_Parity_No; //奇偶校验
USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_RTS_None; //硬件流控,不使用
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; 
USART_InitStructure.USART_Clock = USART_Clock_Disable;//同步通信 
USART_InitStructure.USART_CPOL = USART_CPOL_High; //同步通信
USART_InitStructure.USART_CPHA = USART_CPHA_1Edge; //同步通信
USART_InitStructure.USART_LastBit = USART_LastBit_Enable; //同步通信
USART_Init(USART1, &USART_InitStructure);

使能UART口

c 复制代码
USART_Cmd(USART1, ENABLE);

4 发送字符

每隔1s 发送一个字符

把要发送的数据,放在DR的寄存器即可

c 复制代码
/* Send one HalfWord on USART3 */ 
USART_SendData(USART3, 0x26); 
相关推荐
楷哥爱开发4 小时前
如何使用 Claude Fable 5 进行网页抓取?2026最新实战教程
大数据·网络·人工智能
Sirius Wu5 小时前
OpenClaw Skill:Matplotlib 可视化技能 + 沙箱双层隔离完整详解
服务器·网络·人工智能·安全·ai·架构·aigc
酣大智5 小时前
常用 IP 协议号大全(IP 层承载的上层协议)
网络·网络协议·tcp/ip
大公产经晚间消息8 小时前
《寻访独角兽》首期走进太仓,探访小科智行的硬科技“突围”
网络·人工智能·科技
炸膛坦客8 小时前
单片机开发工具篇:(九)MCU 芯片包的安装
单片机·嵌入式硬件
JoyCong19989 小时前
ToDesk新功能科普:屏幕墙、协作模式、设备别名、USB映射...
网络·科技·电脑·远程工作·远程操作
数智化管理手记10 小时前
智能财务如何减少财务加班?智能财务落地需要哪些工具支撑?
大数据·网络·数据库·数据挖掘·精益工程
智者知已应修善业13 小时前
【51单片机实现初始化数码管不显示按启动从0秒计时到60按暂停一次显示当前秒按2次恢复原始状态】2024-6-11
c语言·c++·经验分享·笔记·嵌入式硬件·算法·51单片机
其实防守也摸鱼14 小时前
运维--安全与数据库
网络·数据库·学习·安全·安全威胁分析·数据库架构·软件安全
wbs_scy14 小时前
仿 muduo 高并发服务器项目:实现 Connection 连接管理模块,并整合 Any 上下文
运维·服务器·网络