STM32G431之串口详解

发布者:Enchanted2021最新更新时间:2024-03-07 来源: elecfans关键字:串口 手机看文章 扫描二维码
随时随地手机看文章

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相连。

poYBAGKVYYCAQzo8AANxhmKe1j8171.png#pic_center

3.串口配置

pYYBAGKVXZGAX15ZAAMcKYwnVUU522.pngpoYBAGKVXaGASG6YAACP6tLi_cM084.pngpYYBAGKVXbSAUq43AAJ2tliqR_k735.png

3.代码生成

poYBAGKVXeKAegB0AAQOlg8c6V0532.png

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:

pYYBAGKVXtCAa9FBAAGOiBoiyao782.png

发送数据寄存器TDR:

pYYBAGKVXyyAL1GWAAIU_JISlzM202.png


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 主函数

poYBAGKVXjmAdeizAAM7HOXuLOM595.pngpYYBAGKVXluANNCkAAyV5pe_BCI582.pngpYYBAGKVXm-AC4tkAAGqfA9dW3I200.png


关键字:串口 引用地址:STM32G431之串口详解

上一篇:STM32定时器的几种用法
下一篇:深度解析STM32驱动LCD原理

推荐阅读最新更新时间:2024-11-09 13:06

U-Boot移植(5)dnw串口终端没有反应
把上面生成的u-boot.bin文件,在cmd下利用sfj2410方式烧入板中,首先拔掉短路帽。。。然后经过连续几个0,之后,开始烧入板子,烧完后退出。重启板子,在串口端下竟然没有看见一点信息,心凉了一大截。。。呵呵! 编译、连接没问题,烧写也没有问题,那为什么uboot启动不了呢? 于是上了 http://www.100ask.net 论坛,这个论坛的超级版主就是《嵌入式linux应用开发完全手册》的作者,真的是百问网,问什么都答。。。 开始怀疑是ylp2410的晶振问题,后来看了下优龙板晶振也都是12MHZ,在YLP2410_BIOS下启动linux过程也可以看到这方面的信息。。所以也不是晶振问题。 到了晚上10点多,
[单片机]
ARM11 S3C6410系列教程之二:串口
  对于一个微处理器,最常用也是最简单的接口就是串口,它不需要太多的管脚,也不需要太多的硬件电路,如果不放心,增加一个max232可以达到万无一失的境地,完成数据的传输。   S3C6410拥有187个复用功能的I/O端口,这些端口可以分为17组,具体如下:   S3C6410X UART 支持的比特率可达到 3Mbps。每个 UART包含两个 64-byte FIFO’s用于发送和接收数据。我们可以这样理解,当配置好寄存器后,我们可以从相应的缓存区读取或者发送相应的数据。通过上面的描述可以看出,S3C6410的GPA和GPB为串口。现在我以串口0为例介绍S3C6410的串口如何配置。对与串口0,通过设置GPACON为相应
[单片机]
ARM11 S3C6410系列教程之二:<font color='red'>串口</font>
MSP430学习总结——UART串口
一、MSP430串口 我用的这个单片机是MSP430F5529,这个单片机有两个串口,分别是USCI_A0和USCI_A1,以下是关于MSP430串口的配置以及接收函数和发送函数。 二、串口配置 说到串口,那肯定离不开起始位、数据位、校验位、停止位以及波特率。 先来说一下常用的寄存器。 串口控制寄存器0 这个寄存器可以设置数据位,停止位和校验位等 串口控制寄存器1 这里可以设置时钟源和中断使能等 波特率设置寄存器 波特率设置涉及到三个寄存器UCA0BR,UCA0BR1,UCA0MCTL 具体的设置方法在芯片手册上有写,也可以参考一下这位大佬的博客https://blog.csdn.net/weixin_27070451
[单片机]
MSP430学习总结——UART<font color='red'>串口</font>
【STM32】5—UART串口(中断模式)
0 实验预期效果 完成串口数据的接收和发送 1 相关原理图 2 软件配置 STM32CubeMX配置USART1: 在NVIC中配置USART中断优先级: 3 代码编写 3.1 函数认识 见博客【STM32】HAL库学习 2—hal_uart_kokoのadventure的博客-CSDN博客 3.1.1 串口发送 /** * @brief Sends an amount of data in non blocking mode. * @note When UART parity is not enabled (PCE = 0), and Wo
[单片机]
【STM32】5—UART<font color='red'>串口</font>(中断模式)
STM32F407IGHX与Ubuntu20.04虚拟串口通信
为了让RobomasterC板(这块板用的是STM32F407IGHX的芯片)能与上位机进行通讯。我最近翻了不少博客和CSDN文章,看到了很多文章存在一些问题,经过了一下午试错,我成功实现了STM32F407IGHX利用STM32CubeIDE进行配置并然后用HAL库进行编程,与安装有ROS的Ubuntu进行虚拟串口通信。 在翻看博客的时候我发现,RM以及上下位机通信资料并不多,而且很多已有资料都只讲述了实现原理,却没有讲如何具体一步步实现某个功能,这就导致初学者可能在翻看过程中,越看越懵,反而写不出一份能用的代码。 所以这篇文章会尽可能详细的讲怎么实现串口通信,而尽量少讲其原理,由于很多文章都已经详尽的写出了串口通信的原
[单片机]
STM32F407IGHX与Ubuntu20.04虚拟<font color='red'>串口</font>通信
【PIC单片机】-- 串口相关知识
00 写在前面 该系列的文章,源自于担任过PIC单片机课程的助教,主要向学弟们讲解了几节实验课的内容。在此记录上课的一些知识。 本系列文章主要介绍的内容: 实验1–介绍和基本I/O–按钮和LED(学习嵌入式的第一步就是点一个灯,就像学习编程语言的第一步都是写一个“hello world”代码) 实验2–MPLAB+PICkit 3+LCD+I/O(这次主要是介绍液晶显示屏的使用,很多时候我们系统的调试都需要用到,比如做一个测温系统,那我们就可以通过液晶显示屏,显示传感器采集的数值,然后再通过软件来做进一步的处理) 实验3–ADC(这个是模数转化实验,就是之前模数电学习那些知识的一个综合运用) 实验4–串行通信–UA
[单片机]
【PIC单片机】-- <font color='red'>串口</font>相关知识
stm325个串口的配置函数 STM32串口如何发送数据
5个串口的配置函数和收发数据函数代码: #include “stm32f10x.h” #include “misc.h” #include “stm32f10x_gpio.h” #include “stm32f10x_usart.h” void USART1_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
[单片机]
stm325个<font color='red'>串口</font>的配置函数 STM32<font color='red'>串口</font>如何发送数据
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中 u8 Usart2_buf ; unsigned int usart2_lent; void main(void) { char buf_password = 000000 ;//6位密码 memset((char *) &buf_password, 0, sizeof(buf_password)); strncpy(buf_password, Usart2_buf + 9, 6);//从外键获取的信息保存到Usart2_buf中,其中从第10-15位保存的是密码 if(save_password()==1) { soundBe
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved