赞
踩
前注:本文章主要讲解【原理】【固件库(标准库)】【HAL库】
内容为 'Jojo'编写,日常学习总结,内容如有不足、不妥之处请私信告知,谢谢!
按数据传送的方式,通讯可分为串行通讯与并行通讯。
特性对比
根据传输方式的不同,可以分为同步通信和异步通信
串口连接和时序
1 .在数据传输期间不能复位 TE 位,否则将破坏 TX 脚上的数据,因为波特率计数器停止计数。 正在传输的当前数据将丢失。2 . TE 位被激活后将发送一个空闲帧。
1 个停止位 |
停止位位数的默认值
|
2 个停止位 |
可用于常规
USART
模式、单线模式以及调制解调器模式。
|
0.5 个停止位 | 在智能卡模式下接收数据时使用。 |
1.5
个停止位
|
在智能卡模式下发送和接收数据时使用。
|
接收完成后就把接收移位寄存器数据移到 RDR 内,并把 USART_SR 寄存器的 RXNE 位置 1,同时如果 USART_CR1 寄存器的 RXNEIE 置 1 的话可以产生中断。
4. ④小数波特率生成
波特率的常用值有 2400、9600、19200、115200。
小数x16就是寄存器的值
6. 中断控制
涉及文件stm32f10x_usart.h,stm32f10x_usart.c,stm32f10x.h
- typedef struct
- {
- __IO uint16_t SR; //状态寄存器
- uint16_t RESERVED0; //保留0
- __IO uint16_t DR; //数据寄存器
- uint16_t RESERVED1; //保留1
- __IO uint16_t BRR; //波特比率寄存器
- uint16_t RESERVED2; //保留2
- __IO uint16_t CR1; //控制寄存器1
- uint16_t RESERVED3; //保留3
- __IO uint16_t CR2; //控制寄存器2
- uint16_t RESERVED4; //保留4
- __IO uint16_t CR3; //控制寄存器3
- uint16_t RESERVED5; //保留5
- __IO uint16_t GTPR; //保护时间和预分频寄存器
- uint16_t RESERVED6; //保留6
- } USART_TypeDef;
- 1 typedef struct {
- 2 uint32_t USART_BaudRate; // 波特率
- 3 uint16_t USART_WordLength; // 字长
- 4 uint16_t USART_StopBits; // 停止位
- 5 uint16_t USART_Parity; // 校验位
- 6 uint16_t USART_Mode; // USART 模式
- 7 uint16_t USART_HardwareFlowControl; // 硬件流控制
- 8 } USART_InitTypeDef;
- typedef struct {
- 2 uint16_t USART_Clock; // 时钟使能控制
- 3 uint16_t USART_CPOL; // 时钟极性
- 4 uint16_t USART_CPHA; // 时钟相位
- 5 uint16_t USART_LastBit; // 最尾位时钟脉冲
- 6 } USART_ClockInitTypeDef;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。