当前位置:首页 » 《随便一记》 » 正文

串口通信中关键知识点4_ST小智的博客

18 人参与  2022年01月11日 15:07  分类 : 《随便一记》  评论

点击全文阅读


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

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);


点击全文阅读


本文链接:http://zhangshiyu.com/post/33032.html

串口  寄存器  中断  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1