STM32G431之串口详解

描述

1.串口简介

      通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

      任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。

      RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。

      TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时, TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。

串口特性:

● 全双工的,异步通信
● NRZ标准格式
● 分数波特率发生器系统
    ─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s
● 可编程数据字长度(8位或9位)
● 可配置的停止位-支持1 或2个停止位

2.硬件接口

      在本开发板中,提供串口接口有两个,一个是普通串口USART1,一个是低功耗串口LPUART1。LPUART1可以通过32.768 kHz驱动,波特率可达9600bps,我们这以普通串口为例。

根据原理图,USART1_TX和PC4相连,USART1_RX和PC5相连。

HAL

3.串口配置

HALHALHAL

3.代码生成

HAL

3.1 printf重定向实现

int fputc(int c, FILE *stream)
{
  huart1.Instance->TDR=c;
  while( !(huart1.Instance->ISR&1<<7)){}
  return c;
}

3.2 串口中断

   STM32G431芯片有读数据寄存器RDR和发送数据寄存器TDR。

读数据寄存器RDR:

HAL

发送数据寄存器TDR:

HAL

 

void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
  uint8_t c;
  /* USER CODE END USART1_IRQn 0 */
  HAL_UART_IRQHandler(&huart1);
  /* USER CODE BEGIN USART1_IRQn 1 */
  c=huart1.Instance->RDR;//接收数据
  huart1.Instance->TDR=c;
  /* USER CODE END USART1_IRQn 1 */
}

3.3 主函数

HALHALHAL
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分