|
1、处理器与外部设备通信的两种方式:% _3 U+ V I' } 1.并行通信 -传输原理:数据各个位同时传输。 -优点:速度快。 -缺点:占用引脚资源多。 2.串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少。 -缺点:速度相对较慢。) Y) m; N3 @* |" Y+ X( z 2、串行通信按照数据传送方向,分为:, A N& K1 H% G- n. F x 1.单工:数据传输只支持数据在一个方向上传输 。 2.半双工:允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信; 3.全双工:允许数据同时在两个方向上传输,因此全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。2 G: M) F% o. B- K+ i& j( T
& b* Z( ?; N# |& f V8 j 3、串行通信的通信方式 : 1.同步通信:带时钟同步信号传输,根据时钟信号传输。 -SPI,IIC通信接口 2.异步通信:不带时钟同步信号,需规定波特率来通信。 -UART(通用异步收发器),单总线2 o6 |3 a" k$ H& c6 A/ x ; i$ _! q7 t6 Z$ \/ m. Q
: q6 T* @: F6 {/ q; R9 k 4、STM32的串口通信接口 :0 q) H" a5 I$ i/ }8 f 1.UART:通用异步收发器 UART异步通信方式特点: 全双工异步通信。1 t. ]# X5 c0 p& g3 b; A3 _ 分数波特率发生器系统,提供精确的波特率。-发送和接受共用的可编程波特率,最高可达4.5Mbits/s 可编程的数据字长度(8位或者9位);' F3 n& w- r- x. U. \ 可配置的停止位(支持1或者2位停止位);1 K, v9 h, j' W5 t2 Z& C: r 可配置的使用DMA多缓冲器通信。3 J5 N# l* y9 ~( P' m6 h8 r2 r8 c 单独的发送器和接收器使能位。 检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志 多个带标志的中断源。3 E, N8 L' _, g4 N6 `1 O6 B% j 触发中断。 其他:校验控制,四个错误检测标志。 2.USART:通用同步异步收发器8 N. w. y* c0 N 5、UART异步通信方式引脚连接方法: -RXD:数据输入引脚。数据接受。 -TXD:数据发送引脚。数据发送。# @" x6 k$ l" ^6 n* d H- J) `+ i
1 @' D' _5 r; k+ P( ^& V1 m
C/ E* p/ D( `
6、串口通信过程: . Q/ C/ P5 f. E7 F
! o, K$ b. S7 h- J% N4 `% ~ 7、STM32串口异步通信需要定义的参数: 起始位 数据位(8位或者9位) 奇偶校验位(第9位) 停止位(1,15,2位) 波特率设置 ! j+ U/ Q7 k1 [6 g! [) k; R* Y1 H
1 m: Z& Y; E/ |* o3 _4 |6 Z 8、USATR框图: 4 y7 @' B+ z+ ? # P$ k6 S; |* h1 \7 O
( z6 m% _- N7 ^' R1 B 9、常用的串口相关寄存器:1 I" m% R3 T* o2 x7 @& q 1.USART_SR状态寄存器 7 ]4 N) D9 W/ ]3 R; v0 J
2.USART_DR数据寄存器
6 {1 F4 p2 [. N" o; V$ a 3.USART_BRR波特率寄存器! }, t1 b T. h: {
波特率计算方法: 1 i/ L. E5 i- V' D3 S; w6 b
10、串口配置的一般步骤:* S; ?$ H0 D9 }9 d 串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); 串口复位:USART_DeInit(); 这一步不是必须的+ r' O2 _1 {1 q+ G GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP; w6 U: h. q0 k# S5 a9 Q. H 串口参数初始化:USART_Init();# R7 I% o- i8 p) K" N5 Y 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig(); 使能串口:USART_Cmd();4 N" Q# K) S' @% Z& k6 c 编写中断处理函数:USARTx_IRQHandler(); 串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据/ Z. N/ I+ ?$ I& ~ 串口传输状态获取: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);- h4 y; I1 E& {! w. w) Z ———————————————— 版权声明:集中注意力619% G# e+ H+ p' F, A6 x0 M) a 如有侵权请联系删除* P3 O" r. P& u" L$ b0 ~5 H+ t3 | 6 J4 e+ s3 O1 Y4 t4 b) m1 K# @ ; r+ P# n# b, a! Q) F! Z9 T% C |
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之继电器模块
微信公众号
手机版