打印
[STM32G4]

STM32G431之串口详解

[复制链接]
1057|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.串口简介

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

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

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

串口特性:

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

2.硬件接口

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

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


使用特权

评论回复
沙发
classroom|  楼主 | 2023-5-25 11:11 | 只看该作者
3.串口配置

3.代码生成

使用特权

评论回复
板凳
classroom|  楼主 | 2023-5-25 11:13 | 只看该作者
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:

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 */
}

使用特权

评论回复
地板
classroom|  楼主 | 2023-5-25 11:14 | 只看该作者
3.3 主函数



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

414

主题

1993

帖子

1

粉丝