USART:通用同步/异步接收/发送器

要使用NVIC中断控制器的话,那么就得加入misc.c文件,在这个文件里面包含了NVIC的主要功能代码。


1.关于USART_InitTypeDef结构体

直接看代码:

typedef struct {
  uint32_t USART_BaudRate;//设置波特率
  uint32_t USART_Mode;//设置模式是读还是写或者两者都是
  uint32_t USART_WordLength;//设置传输的数据位长度
  uint32_t USART_StopBits;//设置停止位
  uint32_t USART_HardwareFlowControl;//设置硬件数据流控制
  uint32_t USART_Parity;//设置是否需要奇偶校验
} USART_InitTypeDef;

下面看看每个结构体成员可以取的值:

USART_Mode
  • USART_Mode_Rx: 只读
  • USART_Mode_Tx: 只写
  • USART_Mode_Rx | USART_Mode_Tx: 读写

USART_WordLength
  • USART_WordLength_8b:
  • USART_WordLength_9b: 如果开启了奇偶校验的话那么最好数据位是9位,因为校验位会插入在数据位的最高位上

USART_StopBits
  • USART_StopBits_1: 一位停止位
  • USART_StopBits_0_5: 0.5个停止位
  • USART_StopBits_2: 2个停止位
  • USART_StopBits_1_5: 1.5个停止位

USART_Parity
  • USART_Parity_No: 不设置奇偶校验位
  • USART_Parity_Even: 设置偶检验位
  • USART_Parity_Odd: 设置奇校验位
    需要注意的地方:经过计算出来得到的校验位被放在数据位的最高位,所以为了避免乱码,最好在开启了奇偶校验的话那么就将USART_WordLength设置为9位

USART_HardwareFlowControl
  • USART_HardwareFlowControl_None: 不需要硬件流控制
  • USART_HardwareFlowControl_RTS: request to send
  • USART_HardwareFlowControl_CTS: clear to send
  • USART_HardwareFlowControl_RTS_CTS:

2.相关库函数的大致使用流程

这里以伪代码简易介绍一下:

USART_InitTypeDef USART_InitStructure;
USART_InitStructure.xxx = xxx;//填充好这个USART_InitTypeDef对象
USART_Init(USARTx, &USART_InitStructure);//应用配置
USART_Cmd(USARTx, ENABLE);//使能具体的USART

当然,前面还得配置一下端口。需要注意的是如果端口的默认功能就是用作USART的话,那么不需要开启AFIO时钟,我们只需要开启端口时钟以及usart时钟。还有就是对于STM32F103ZE来说,我们的usart1属于APB2外设。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 串口操作 串口操作需要的头文件 #include /*标准输入输出定义*/ #include /*标准函数库定...
    旅行家John阅读 5,212评论 0 3
  • 姓名:周崇杰 学号:16140120059 专业:机械设计制造及其自动化 转载自:http://blog.csd...
    CJbaby阅读 8,812评论 0 3
  • 一、python 如果要给文件加密:把.py文件变成.mpy文件 TTE分时操作系统相应速度很高 二、MDK SR...
    李响lx阅读 2,948评论 1 0
  • ns3-model-library.pdf wifi-model 翻译 wifi-model 33.1 Desig...
    shawn168阅读 14,357评论 0 9
  • 他敢牵起她的手 却不敢承诺一辈子 (请一旦牵起她的手 就不要放手了 好吗)
    馬德里的陽光阅读 3,352评论 0 0