|
1、处理器与外部设备通信的两种方式:( U, M3 G' B6 r3 x0 M' C) k 1.并行通信 -传输原理:数据各个位同时传输。 -优点:速度快。 -缺点:占用引脚资源多。; S @3 b9 o1 \0 |& x4 T8 l 2.串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少。 -缺点:速度相对较慢。% @# e: u, q/ g& ^) R8 E4 E! | 2、串行通信按照数据传送方向,分为:2 P" M% [& b# s: E 1.单工:数据传输只支持数据在一个方向上传输 。9 S" w6 p! t1 K0 q$ T" w! C 2.半双工:允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信; 3.全双工:允许数据同时在两个方向上传输,因此全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 L n* w5 v: @' f3 h& e
) V* \( n* x6 Q& m+ d/ E. ^ 3、串行通信的通信方式 :& {9 E! F1 D0 z2 q0 @ 1.同步通信:带时钟同步信号传输,根据时钟信号传输。 -SPI,IIC通信接口 2.异步通信:不带时钟同步信号,需规定波特率来通信。 -UART(通用异步收发器),单总线- ^% n5 a7 S; t: f
7 H6 x. `% @/ v 4、STM32的串口通信接口 : 1.UART:通用异步收发器0 k& J2 n' E3 T6 ]% o& ^) b UART异步通信方式特点: 全双工异步通信。 分数波特率发生器系统,提供精确的波特率。-发送和接受共用的可编程波特率,最高可达4.5Mbits/s 可编程的数据字长度(8位或者9位); 可配置的停止位(支持1或者2位停止位);$ ~; ^3 P- ]! Y: h8 v 可配置的使用DMA多缓冲器通信。: @7 K3 @8 }; Q. w 单独的发送器和接收器使能位。: U" j1 [- W+ G( @" f 检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志 多个带标志的中断源。; n |4 S4 V* i6 S! q7 V 触发中断。 其他:校验控制,四个错误检测标志。 2.USART:通用同步异步收发器 4 u3 P, b$ }7 J+ q7 s4 T 5、UART异步通信方式引脚连接方法: -RXD:数据输入引脚。数据接受。 -TXD:数据发送引脚。数据发送。
( a/ w- s* v0 |$ Q0 r% N1 G3 k8 G
% D$ |9 s1 {2 ]3 d3 M5 F 6、串口通信过程: : b$ \9 d6 J2 s& w; V7 h I 3 O* T4 R5 K% }+ a, {, i3 N
' ]* _% M% y0 K( ?% L! X; Y$ M) h0 N 7、STM32串口异步通信需要定义的参数: 起始位 数据位(8位或者9位) 奇偶校验位(第9位) 停止位(1,15,2位) 波特率设置 9 Q4 ^( g% V+ K5 d% M5 X# S
8、USATR框图: : B* _" d# q3 ^& o% V 1 y! ~$ @8 s. T0 |9 @/ T
9、常用的串口相关寄存器: 1.USART_SR状态寄存器 / `$ Y" o8 K1 b8 O) h% R* m
H1 G9 e0 \/ j. |; q 2.USART_DR数据寄存器# p% Q k$ b1 T6 E% W- s
3.USART_BRR波特率寄存器
1 p3 d$ c( C& n0 A 波特率计算方法:1 Z4 d, d% R X. r% C5 E
10、串口配置的一般步骤: 串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); 串口复位:USART_DeInit(); 这一步不是必须的 GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP4 x2 r; G3 u+ ?( c 串口参数初始化:USART_Init();! @! O5 A. V( T5 l& | 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig();; S# K$ V* W& e4 s$ B0 x 使能串口:USART_Cmd();+ [2 Y; m6 V; X; ] 编写中断处理函数:USARTx_IRQHandler(); 串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据8 Y* A y h8 E* x5 [ I/ H 串口传输状态获取: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);) [2 c' k$ E6 y ————————————————, R E1 Q* i, t0 h! i9 X: w 版权声明:集中注意力619 如有侵权请联系删除 # ~) x7 r# \2 f% `, `9 V1 J: r/ q 2 m, G8 y% q+ K P2 ^7 V |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版