Loading

USART - 串口通信

串口通信 - USART

常用术语

  • 上位机 - 数据处理
  • 下位机 - 收集数据
  • 全双工 - 同时 收/发
  • 半双工 - 不同时 收/发
  • 单工 - 单向
  • 异步通信
  • 同步通信

特点

  • 串行
  • 全双工
  • 异步

控制寄存器(USART_CRx)

  • STM32F4xx中文参考手册 - 714

image20210128132813470.png

常用 功能 常用值
OVER8 过采样模式 0
UE 使能位 1
M 字长选择位 0
PCE 校验使能位 0
PS 校验位选择位 0
TXIE 发送缓冲区空中断使能位 1
TCIE 发送完成中断使能位 1
RXNEIE 接受缓冲区非空中断使能 1
TE 发送使能位 1

数据寄存器 (USART_DR)

  • STM32F4xx中文参考手册 - 713
Data register
偏移地址:0x04
复位值:0xXXXX XXXX 
位 31:9 保留,必须保持复位值
位 8:0 DR[8:0]:数据值

状态寄存器(USART_SR)

  • STM32F4xx中文参考手册 - 716

image20210128104457050.png

常用 功能
RXNE 读数据寄存器非空 - 需要读取 1
TC 发送完成 1

固件库编程

USART_Init

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)

功能:

  • 串口参数初始化(波特率/停止位等)

参数:

  • USART_TypeDef *- 执行寄存器基地址
  • USART_InitTypeDef- 参数结构体

返回:

补充:

	USART_TypeDef * USARTx: where x can be 1, 2, 3, 4, 5, 6, 7 or 8 to select the USART or UART peripheral.

typedef struct
{
    uint32_t BaudRate;     //波特率
    uint32_t WordLength;   //字长
    uint32_t StopBits;     //停止位
    uint32_t Parity;       //奇偶校验
    uint32_t Mode;         //收/发模式设置
    uint32_t HwFlowCtl;    //硬件流设置
    uint32_t OverSampling; //过采样设置
} UART_InitTypeDef 
 

USART_ReceiveData

uint16_t USART_ReceiveData(USART_TypeDef* USARTx)

功能:

  • 接受-特定-位数-数据 DR寄存器

参数:

  • USART_TypeDef *- 执行寄存器基地址

返回:

  • (uint16_t)(USARTx->DR & (uint16_t)0x01FF)

USART_SendData

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)

功能:

  • 发送-特定-位数-数据 DR寄存器

参数:

  • USART_TypeDef *- 执行寄存器基地址
  • uint16_t - 发送数据

返回:


USART_GetFlagStatus

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)

功能:

  • 查找 - 特定 - 位置 - 数值 SR寄存器

参数:

  • USART_TypeDef *- 执行寄存器基地址
  • uint16_t - SR寄存器的特定位置

返回:

  • FlagStatus RESET-0 SET-!RESET

补充:

  * @param  USART_FLAG: specifies the flag to check.
  *          This parameter can be one of the following values:
  *            @arg USART_FLAG_CTS:  CTS Change flag (not available for UART4 and UART5)
  *            @arg USART_FLAG_LBD:  LIN Break detection flag
  *            @arg USART_FLAG_TXE:  Transmit data register empty flag
  *            @arg USART_FLAG_TC:   Transmission Complete flag
  *            @arg USART_FLAG_RXNE: Receive data register not empty flag
  *            @arg USART_FLAG_IDLE: Idle Line detection flag
  *            @arg USART_FLAG_ORE:  OverRun Error flag
  *            @arg USART_FLAG_NE:   Noise Error flag
  *            @arg USART_FLAG_FE:   Framing Error flag
  *            @arg USART_FLAG_PE:   Parity Error flag
posted @ 2021-01-28 20:19  流缘飞雨  阅读(780)  评论(0)    收藏  举报