物联网之STM32开发三(USART串口)

发布者:数字狂想最新更新时间:2021-10-13 来源: eefocus关键字:物联网  STM32  USART串口 手机看文章 扫描二维码
随时随地手机看文章

内容概要:

串行通信的基本概念


串口寄存器介绍


STM32实现串口数据的收发


HAL串口库函数的使用及printf的实现


串行通信的基本概念:


内容概要:


通信的基本概念


USART介绍


串口的电路连接


串口的通信协议


同步通信和异步通信:


通信,最少要有两个对象,一个收,一个发。


同步通信:一般情况下同步通信指的是通信双方根据同步信号进行通信的方式。比如通信双方有一个共同的时钟信号,大家根据时钟信号的变化进行通信。

异步通信:是指数据传输速度匹配依赖于通信双方有自己独立的系统时钟,大家约定好通信的速度。异步通信不需要同步信号,但是并不是说通信的过程不同布。

串行通信和并行通信的区别:


串行通信:指的是同一时刻只能收或发一个bit位信息。因此只用1根信号线即可。


并行通信:指的是同一时刻可以收或发多个bit位的信息,因此需要多根信号线才行。

                         -串行传输:数据按位顺序传输。                                                                  -并行传输:数据各个位同时传输。


                         -优点:占用引脚资源少                                                                                  -优点:速度快


                         -缺点:速度相对较慢                                                                                      -缺点:占用引脚资源多


单工、半双工、全双工:


单工:要么收,要么发,只能做接收设备或者发送设备。比如收音机  


半双工:可以收,可以发,但是不能同时收发, 比如对讲机  


全双工:可以在同一时刻既接收,又发送。 手机

常见通信总结:

USART基本概念:


通用同步异步收发器(USART)灵活地与外部设备进行全双工数据通信,满足外部设备对工业标准NRZ异步串行数据格式的要求。USART通过小数波特率发生器提供了多种波特率。它支持同步单向通信和半双工单线通信;还支持LIN(局域互联网络),智能卡协议与IrDA(红外数据协会)SIR ENDEC规范,以及调制解调操作(CTS/RTS)。而且,它还支持多处理器通信。


USART支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32 单片机),通常情况同步信号很少使用,因此USART和一般单片机UART使用方式是一样的,都使用异步模式。


串口电路连接:

STM32f051串口:STM32F051内置多达两个通用同步 / 异步收发器( USART1 和 USART2 ),通信速度可达 6 Mbit / s

串口通信协议介绍:

波特率:


 在串行通信中,用“波特率”来描述数据的传输速率。所谓波特率,既每秒传送的二进制位数,其单位为bps(bits per second)。它是衡量串行数据速度快慢的重要指标。


国际上规定一个标准的波特率系列: 110、300、600、1200、1800、2400、4800、9600、115200、14.4Kbps、19.2Kbps、……


例如:115200bps、指每秒传送115200位。通信双方必须设置同样的同学速率才能正常通信


注意:实际的数据没这么多,还包括起始位,结束位,校验位


STM32 USART寄存器介绍

内容概要:


控制寄存器——USART_CR  


状态寄存器——USART_SR  


数据寄存器——USART_DR  


波特率寄存器——USART_BRR


串口寄存器-USART_CR1:

串口寄存器-USART_CR2:

                                                         

串口寄存器-USART_BRR:

串口寄存器-USART_ISR:

串口数据的发送和接收:

串口寄存器-USART_TDR:

串口寄存器-USART_RDR:

STM32实现串口数据的收发

内容概要:


串口硬件原理图


CubeMX中串口的配置


串口发送一个字符


串口接收一个字符


串口硬件原理图:

注意:如果无法识别串口,清装好ch340串口驱动


CubeMX中串口的配置:

串口数据的发送和接收:

串口发送一个字符:


void  Uart_Putchar(uint8_t ch)

{

while(!(USART1->ISR &(1<<7)));   //等待发送寄存器空

USART1->TDR = ch;       //发送字符

}

 

void Uart_Putstring(uint8_t  *str)

{

while(*str != '')

{

Uart_Putchar(*str);

str++;

}

}

串口接收一个字符:


uint8_t Uart_Getchar(void)

{

while(!(USART1->ISR & (1<<5)));  //等待收到一个字符的数据

return  USART1->RDR;    //返回收到的字符

}

HAL串口库函数的使用及printf的实现

HAL库中串口的收发函数:


Stm32f0xx_hal_uart.c  文件中

 

串口的发送函数

 

HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

 

串口的接收函数

 

HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

printf()实现串口重定向:


printf函数调用的是c库中的fputc函数。因此我们如果重新写了fputc函数,就可以改变printf函数的功能,可以向串口打印输出。

 

int fputc(int ch,FILE *f){

    while((USART1->ISR&(1<<7)) == 0);

    USART1->TDR=(uint8_t)ch;

    return ch;

}

关键字:物联网  STM32  USART串口 引用地址:物联网之STM32开发三(USART串口)

上一篇:利用STM32 的串口来发送和接收数据实验
下一篇:STM32中使用printf打印串口数据

推荐阅读最新更新时间:2024-10-31 02:50

STM32移植UCGUI3.90笔记
在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!) 移植步骤: 第一步:首先,得把你的TFT底层驱动写好,既在裸机下,可以正常显示。 第二步:加入UCGUI程序包。 第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不带触摸功能,此配置在此不讲。) 配置LCDConf.h文件如下: #ifndef LCDCONF_H #define LCDCONF_H #defi
[单片机]
<font color='red'>STM32</font>移植UCGUI3.90笔记
赛普拉斯半导体抢攻汽车与物联网营收跃增
受益于物联网与汽车市场,以及USB-C业务,美国赛普拉斯半导体(Cypress Semiconductor)持续摆脱低毛利与商品化业务,走向高利润商业模式,2017年第3季营收为6.046亿美元,创下2011年以来最佳季度表现。   据EETimes报导,2017年第3季赛普拉斯物联网无线连接业务年增80%,营业现金流达1.43亿美元,年增37%。其执行长Hassane El-Khoury强调蓝牙与Wi-Fi芯片组合是赛普拉斯连接业务的关键,其次为微控制器(MCU)和存储器。   消费市场方面,除了苹果(Apple)最新iPhone采用赛普拉斯的USB-C之外,智能家居产品甚至连网汽车都采用赛普拉斯技术。除了特定市场,赛普拉斯已经
[半导体设计/制造]
移动产业竞逐物联网 打造标准化平台为首要目标
    手机业界走出传统的行动装置领域,大举朝向车联网、智慧城市、智慧家庭、智慧健康等物联网(IoT)应用扩张,不过,由于涉及的应用领域与产业太过广泛,标准化与互通性等问题也浮上台面,晶片业者与相关联盟已经开始提供标准化平台,希望解决互通性的问题。   本届世界行动通讯大会(MWC 2015)中,物联网是热门话题之一,包括手机厂商、晶片业者、电信设备业者、电信营运商都将焦点转向传统行动装置以外的新兴领域,除了智慧穿戴装置持续吸睛,智慧城市、智慧家庭、车联网、机器人、智慧健康医疗等应用亦颇受瞩目。   高通创锐讯(Qualcomm Atheros)产品管理资深总监Joseph Bousaba表示,在万物互联的时代,要实现的是终端之间的
[手机便携]
STM32 Keil-MDK工程模板 V3.5 固件库
原来一直在用3.3 的固件库,3.4 的出来好久了 也没顾得上更新如今的3.5 的库再也忍不住了,建好了个新的V3.5的工程模板 用的是最新的MDK4.20 . 3.5 到3.3 对于一般用户而言 基本没有什么 界面的上变革 目前看来好像仅仅改变了一些定义所处的文件位置,看起来跟合理些,SD 等的驱动更加稳定。我一直很是喜欢STM32的官方固件库 完好的遵循ANSI 风格,代码编写严谨,还有一点C语言面向对象的感觉。更重要的是开源,我想这才是能流行起来的原因。 工程移植了 KEIL 的图形化配置向导 stm32_Init.c 工程路径 Cortex_M3_Project_V3.5\STM32\STM32F10X_HD\RVMDK
[单片机]
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 复用推挽输出 对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这
[单片机]
WiSig Networks获得CEVA授权,助力WiSig NB-IoT SoC开发
CEVA,全球领先的智能和互联设备信号处理平台和人工智能处理器IP授权许可厂商 (纳斯达克股票交易所代码:CEVA) ,近日宣布5G无线技术产品开发商,印度理工学院海德拉巴分校的孵化企业,WiSig Networks已经获得授权许可,使用CEVA-Dragonfly NB2 IP解决方案,快速开发出一款符合3GPP Rel.14标准的eNB-IoT系统级芯片(SoC)。这款SoC器件将会部署用于印度领先的移动网络运营商的系统和产品中,以期实现资产跟踪、家庭、建筑和工业自动化、智能电网、农业和远程监控等一系列服务。印度计划于2020年开始在全国范围部署NB-IoT,预计在未来几年内将有超过20亿个物联网设备连接到该国的蜂窝网络上。
[网络通信]
stm32.cube(二)——HAL结构及初始化
一、HAL结构 HAL的作用是将基础的寄存器读写操作抽象掉,使程序员只需要关心对芯片模块的行为级操作。stm32的cube包以类似面向对象的思想来进行设计,每一个芯片模块都被抽象成一个类,它的私有成员用以辅助算法的实现,公有成员被用作一个方法供外部调用。 我开发板的芯片型号是stm32f10x系列,基础的芯片结构如下: 这时官网上下载的cube包里hal内容: 对比之后发现几乎所有的模块都已经被包含进HAL层。 二、HAL的初始化 HAL层被调用前要先运行初始化函数HAL_init(),它包含在针对HAL自身的全局操作操作的源文件hal.c里。 HAL全局结构 由于Hal_init函数不长,就直接上原型了: HAL_
[单片机]
STM32之六独立看门狗
单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生,在一定的时间内(通过计数器)没有喂狗信号输入给看门狗则表示MCU出现问题,自动会给处理器发送复位信号,是MCU重新启动,是系统正常运转。 STM32的独立看门狗有内部的专门40KHz低速时钟驱动,即使主时钟发生故障,它仍然有效。看门狗时钟十一个内部RC时钟,并不是准确的40KHz,而是在30~60KHz之间的变化时钟,估算时间的时候以40KHz来计算。 第一步,首先取消寄存器写保护,我们利用库函数的IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);来实现,
[单片机]
<font color='red'>STM32</font>之六独立看门狗
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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