stm32中 uart 是比较常用的, 在使用 HAL时发现了 uart / usart, 原来用一直都没有太注意, 现在有闲时整理一下.
1、UART:universal asynchronous receiver and transmitter通用异步收发器, 仅需要 RX / TX 接口.
2、USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器, 除了 TX/RX 之外, 还额外需要一个 CLK 的 PIN 脚.
也就是说:UART的一般只能用于异步串行通讯,而名称为USART的既可以用于同步串行通讯,也能用于异步串行通讯。
在STM32CubeMX中测试了一下同步通信和异步通信,自动生成的代码中,果然:
1、在使用异步通信时,自动调用的是HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) 初始化
2、在使用同步通信时,自动调用了HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)初始化
一般情况下, 我们是比较少用到同步情况的. 所以一般 HAL_UART 和 HAL_USART 基本是相同的, 所以不必纠结. 除非你确定使用同步串口.
关键字:STM32 UART USART
引用地址:
STM32 UART/USART 的差别
推荐阅读最新更新时间:2024-11-18 23:08
STM32定时器----通用定时器输出带死区互补PWM
功能:利用一个普通定时器,输出2路互补的、频率可调、占空比可调、死区可调的PWM 原理:如下图,计数模式为中心对齐模式 可以看出,CH3高电平区间是以计数器计到4为中心,向两边延伸的。 而CH4,因为输出极性相反,是以0为中心向两边延伸的。 CCR3变小,占空比上升 CCR4变大,占空比上升 CCR3与CCR4的和为ARR 注意,此模式计数器的计数周期=ARR,这与PWM模式:计数周期 = ARR+1不同 这点参考下图STM32参考手册: 故,整理出代码以及计算公式如下: void TIM3_PWMShiftInit(void) { float Duty = 0; u16 ARR = 0,PSC = 0
[单片机]
STM32八种输入输出模式详解
最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这
[单片机]
STM32处理器存储空间布局解析
一、Cortex-M3支持最大4GB的存储空间,其地址映射关系如下图 二、存储器映射实例:256KB Flash 48KB SRAM IROM1为片上程序存储器,即片上集成的Flash存储器,对该处理器Flash大小为256KB,即0x40000 IRAM1为片上数据存储器,即片上集成的SRAM存储器,对该处理器Flash大小为48KB,即0xC000 片上SRAM的起始地址是0x20000000,这是由Cortex-M3内核决定的,从0x20000000开始的512KB存储空间内都可以SAM,即所谓的”大框架“,但具体的SRAM大小由半导体厂商来决定,因为SRAM成本较高一般容量都不是很大。
[单片机]
STM32-SPI使用(ZT)
SPI知识: 1) 高速同步串行口。3~4线接口(CS ,CLK ,MOSI,MISO),收发独立、可同步进行。 2)SPI分为主从模式,主模式提供时钟和片选选择信号. 3) 模式控制:CPOL用来控制时钟信号(clk)在空闲时候的状态;CPHA用来控制采样时刻时CLK的边缘动作。 CPOL CPHA 模式 0 0 CLK空闲时为低电平,CLK上升沿采样数据。 0 1 CLK空闲为低电平,CLK下降沿采样数据。 1
[单片机]
一文读懂STM32的基本系统
电源 无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空 对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU 用万用表测试供电电压是否正确,调试时最好用数字电源供电,以便过压或过流烧坏板子,电压最好一步一步从进线端测试到芯片供电端 复位、启动选择 Boot引脚与JTAG无关。其仅是用于MCU启动后,判断执行代码的起始地址 在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源,切不可悬空;STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 用户闪存 = 芯片内置
[单片机]
STM32的外部中断配置
一.配置中断 void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Set the Vector Table base location at 0x08004000 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000); // 1.分配中断向量表 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级 /* Enable the EXTI1 Interrupt NVIC_InitStructure.NVIC_IRQCha
[单片机]
STM32几种启动文件理解
在嵌入式应用程序开发过程里,由于使用C语言编程,基本很少涉及到机器底层寄存器的执行过程,一般都会直接在main函数里开始写代码,似乎main成为了理所当然的起点,尽管从C程序的角度来看程序都是直接从main函数开始执行。然而,MCU上电后,是如何寻找到并执行main函数这一问题却很自然的被忽略了!事实上微控制器是无法从硬件上去定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,因此main函数的入口地址在编译后便不一定是一个绝对地址。MCU上电后又是如何寻找到这个入口地址呢?以前接触无论是PIC、AVR、MSP430或是51过程中都没涉及到启动文件的配置,仅仅只有熔丝位或配置字是需要
[单片机]
STM32开发 -- UART应用层通信协议分析
拿到一份UART的通信协议,上手来操作之前先做一下分析。 一、帧格式说明 先看一下它的帧格式说明: 1、 帧头标志Head 不论是命令帧还是响应帧,帧头标志都是0x92。 2、 协议版本 协议版本号(4bit),目前值为1 加密方式(4bit),0表示采取“数据不加密+校验和”方式。 所以,当前此字段完整值为0x10 3、 控制字段中的C/R比特 用于指示该帧是命令帧还是应答帧,1表示命令帧,0表示应答帧。 4、 控制字段中的T/F比特 用于指示传输数据类型,1表示透明的非结构化数据,0表示正常的数据帧。 5、 虚拟通道 虚拟地址(4bit):代表数据帧的源地址标识。目前为保留位,取值为0。 通道序号(4bit):0表示虚通道0
[单片机]