串口通信中关键知识点4

简介: 串口通信中关键知识点4

  串口基本配置的寄存器,配置过程总结为:


1、串口时钟使能。这里的串口1设置是APB2ENR寄存器的第4位。


2、串口波特率设置。每个串口都有一个自己独立的波特 率寄存器 USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。


3、串口控制。STM32F429 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多 配置都是通过这 3 个寄存器来设置的。这里我们只要用到 USART_CR1 就可以实现我们的功能。


4、数据发送与接收。STM32F429 的发送与接收是通过数据寄存器 USART_DR 来实现的, 这是一个双寄存器,包含了 TDR 和 RDR。


5、串口状态。串口的状态可以通过状态寄存器 USART_SR 读取。


    思考:假如用HAL库进行配置的话,实现过程是什么?

第一:初始化函数 HAL_UART_Init 相关函数:


    HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);


   解释:函数只有一个入口参数 huart,为 UART_HandleTypeDef 结构体指针类型,称为:句柄。

第二:使能串口和 GPIO 口时钟


  使用串口,我们必须使能串口时钟和使用到的 GPIO 口时钟。

__HAL_RCC_USART1_CLK_ENABLE(); //使能 USART1 时钟                                 __HAL_RCC_GPIOA_CLK_ENABLE(); //使能 GPIOA 时钟


第三:GPIO 口初始化设置(速度,上下拉等)以及复用映射配置


GPIO_InitTypeDef GPIO_Initure;


GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_10; //PA9/PA10 GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出


GPIO_Initure.Pull=GPIO_PULLUP; //上拉


GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速


GPIO_Initure.Alternate=GPIO_AF7_USART1; //复用为 USART1 HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化 PA9/PA10

第四:开启串口相关中断,配置串口中断优先级


__HAL_UART_ENABLE_IT(huart,UART_IT_RXNE); //开启接收完成中断


第一个参数:huart为串口句柄     第二个参数:要开启的中断类型。

__HAL_UART_DISABLE_IT(huart,UART_IT_RXNE); //关闭接收完成中断


HAL_NVIC_EnableIRQ(USART1_IRQn); //使能 USART1 中断通道 HAL_NVIC_SetPriority(USART1_IRQn,3,3); //抢占优先级 3,子优先级3


第五:编写中断服务函数

void USART1_IRQHandler(void);


第六:串口数据接收和发送

发送与接收是通过数据寄存器 USART_DR 来实现。当向该寄存器写数据的时候,串口就会自动发送,当收到数据的时候,也 是存在该寄存器内。


HAL 库操作 USART_DR 寄存器发送数据的函数是:


HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);


通过该函数向串口寄存器 USART_DR 写入一个数据:


HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

目录
相关文章
|
7月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
110 1
|
7月前
|
监控 Linux 定位技术
Linux应用开发基础知识——串口应用编程(十一)
Linux应用开发基础知识——串口应用编程(十一)
184 0
Linux应用开发基础知识——串口应用编程(十一)
|
7月前
|
数据格式
串口通信知识点总结
串口通信知识点总结
111 0
|
7月前
透彻理解 UART 通信的基本方法
透彻理解 UART 通信的基本方法
134 0
|
芯片
矩阵键盘原理及程序设计
本文详细介绍了矩阵键盘是什么,主要应用场景,替代品,矩阵键盘的优缺点以及矩阵键盘的按键检测方法。最后附上了以STM32F103系列芯片为例的C程序。
471 2
|
芯片
STM32速成笔记(五)—串口通信
本文介绍了串口通信的概念,用途以及一些相关概念。介绍了如何进行printf重定向,如何根据接收到的特定信息,执行特定操作。此外,本文以通过上位机发送特殊指令控制LED亮灭的小项目,给出了详细的配置方法和程序设计。
223 0
STM32速成笔记(五)—串口通信
|
缓存
蓝桥杯之单片机学习(十一)——串口通信的基本原理与应用
蓝桥杯之单片机学习(十一)——串口通信的基本原理与应用
408 0
蓝桥杯之单片机学习(十一)——串口通信的基本原理与应用
蓝桥杯之单片机学习(十二)——串口通信进阶应用案例解析
蓝桥杯之单片机学习(十二)——串口通信进阶应用案例解析
285 0
蓝桥杯之单片机学习(十二)——串口通信进阶应用案例解析
|
芯片 内存技术
51单片机基础知识
与计算机相似。将微处理器(CPU/中央处理器)、存储器、I/O集成到一片半导体芯片上。 存储器又分为两种: ①RAM(数据存储器) ②ROM(程序存储器) 三、分类 ①通用型 ②专用型 四、发展趋势 (1)CPU;(2)存储器;(3)I/O;(4)功耗;(5)功能 MCS—51: ①8031 ②8051→80C51(低功耗CMOS)→51单片机 ③8751 四、命名规则 ①AT89C51 ②STC89C51 我们以AT89C51来进行命名分解: AT:品牌名 8:8051内核 9:Flash ROM存储器 其中,0→掩膜ROM,7→EP ROM (紫外线可擦除) C:CMOS产品 5:固定不变
450 0
51单片机基础知识
|
存储 计算机视觉
西门子S7-1200编程实例,计数器如何使用?
计数器用来累计脉冲的个数。在西门子S7-1200 PLC中有三种类型的计数器:加减计数器CTUD、加计数器CTU、减计数器CTD。每个计数器都使用存储块中存储的结构来保存计数器数据。在编辑器中放置计数器指令时,分配相应的数据块即背景数据块。计数值的数值范围取决于所选的数据类型。
西门子S7-1200编程实例,计数器如何使用?