单片机stm32你了解多少

发布时间:2022-12-19  

stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm32的视频资料便于学习参考。

什么是串口

UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器

USART : Universal Synchronous Asynchronous Receiver/Transmitter

通用同步/异步收发器

一种是常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。

Tx: 发送数据线

Rx: 接收数据线

A B

TX -----------> Rx

Rx 全双工: 两个设备可以同时发送和接收

串行数据: 发送只一根线,一次只能发送一bit. 一bit接着一bit发送和接收。

模块通信: 上位机 下位机

通信一般需要两个设备,我们把这两个设备,人为叫做上位机, 下位机。

上位机: 把处理性能强的机子,上位机。数据大部分处理都在上位机完成。

下位机: 把数据采集的终端,处理性能单一的机子,下位机。

串口只有一根发送数据线,假如 A要发送一个字符数据  10101010 给B

A -------- ---------

-------- ------- …

高电平周期是多长?即使是不发送数据Tx线上也有一个电平状态,接收方

它怎么知道你是在发送呢?..

UART数据如何传输?

UART protocol 串口协议。

串口发送和接收数据是以帧为单位. Frame

1帧(Frame)= 1 start bit(起始位) + 5-9bits数据位 + 0/1bit 校验位  + stop bits(0.5,

1,1,5,2)

起始位: 一个周期的低电平

数据位: 5-9bits数据位,具体是多少bits,需要双方协商。并且传送是先传送LSB(最低位) … MSB

校验位:

0 bit :没有校验位

1 bit :校验位. “赖子” X

D0 D1 D2 … Dn X

奇校验:要保证传输的1为奇数

D0 D1 D2 … Dn X 要保证这一串数据中1的个数为奇数

1 0 1 0 1 0 1 0 X(1)

1 0 1 0 1 0 1 1 X(0)

偶校验:要保存传输的1为偶数

停止位: 高电平

0.5 个停止位。 半个周期的高电平

1 个停止位

1.5 个停止位

2 个停止位

Baudrate(波特率): 传输速率。

决定 时间周期。

115200 bps: bits per second

物理层标准  the physical layer standards

TTL level UART : TTL电平串口

RS-232:

RS-422:

RS-485:

TTL level UART:

逻辑低电平(0) 0V

逻辑高电平(1) 5V/3.3V

RS-232: 适合较长距离传输

逻辑低电平(0) +3v~+15V

逻辑高电平(1) -3v~-15v

TTL UART RS-232 RS-422 RS-485

电平 1 3.3V/5V 1 -5V ~ -15V +/- 2v +/- 1.5v

0 0V 0 5V ~ +15V

信号 单端信号   单端信号  差分信号   差分信号

传输长度 < 2m <15m <1200m <1200m

不同标准的串口,引脚也不一样。TX/Rx是一定存在的。

TTL

RX

TX

GND

VCC

STM32F4xx 串口控制器

TX

RX

硬件流控:

RTS: Request To Send 请求发送信号

终端告诉对方可以向我传输数据啦。

CTS: Clear To Send 清除发送信号

对方告知终端,我要向你发送数据啦

RTS -------> CTS(对方)

CTS 标志位:

TXE: Transmit data Register Empty

发送数据寄存器为空。

不代表上一次数据已经发送完成啦,因为数据有可能还在 shifter里面

但是此时您可以向TDR写数据啦。

TC : Transmit Complete

发送完成。

发送移位寄存器中的数据已经发送到Tx引脚上面去了。

RXNE: Read Data register Not Empty

接收数据寄存器不为空。意思是你可以读数据啦。

STM32F4xx串口代码流程

(1) GPIO口配置

串口的TX/RX 引脚是由GPIO口来复用的。

a. 使能GPIO分组的时钟

RCC_AHB1PeriphClockCmd

b. 配置GPIO口的功能 GPIO_Init

c. 选择具体的复用功能

GPIO_PinAFConfig

(2) usart配置

a. 使能usart时钟

b. USART_Init

USART_Init(USART_TypeDef * USARTx, USART_InitTypeDef *

USART_InitStruct);

typedef struct

{

uint32_t USART_BaudRate; // 波特率

uint16_t USART_WordLength; //传输字长 ,如下两个任选其一:

USART_WordLength_8b

USART_WordLength_9b

在STM32中:传输字长=数据位数+检验位数

uint16_t USART_StopBits; //停止位数,如下 :

USART_StopBits_1 1bit停止位

USART_StopBits_1_5 1.5bit停止位

USART_StopBits_2 2 bits停止位

USART_StopBits_0_5 0.5bit停止位

uint16_t USART_Parity; //校验方式,如下:

USART_Parity_No 无校验

USART_Parity_Odd 奇校验

USART_Parity_Even 偶校验

uint16_t USART_Mode; //串口模式, 如下:可以组合

USART_Mode_Tx 发送模式

USART_Mode_Rx 接收模式

USART_Mode_Tx | USART_Mode_Rx 发送和接收模式

uint16_t USART_HardwareFlowControl; //硬件流控

USART_HardwareFlowControl_None 无硬件流控

USART_HardwareFlowControl_RTS RTS 请求发送。你可以接收对方的数据。

USART_HardwareFlowControl_CTS CTS 清除发送,你可以发数据给对方。

USART_HardwareFlowControl_RTS_CTS RTS_CTS 发送和接收都用流控

} USART_InitTypeDef;

(3) 中断的配置

USART_ITConfig 在STM32中一个USART只对应一个中断通道,但是引起串口中断的

事件有很多,比如:

TXE -> 发送寄存器为空,可以引起串口中断

TC -> 发送完成,可以引起串口中断

RXNE -> 接收寄存器不为空,可以引起串口中断

……

只不过,这些事件需要"中断控制位使能"

USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);

USART_ITConfig就是用来把一个串口的XX事件,配置成是否引起串口中断的

在串口中断函数里面,就需要判断是哪个串口事件,引起了中断!!!

NVIC_Init()

(4) 使能串口

USART_Cmd

接收(中断函数)

USART1_IRQHanlder()

{

if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

//有数据可读啦

data = USART_ReceiveData(USART1); //读取接收到的数据

}

//清除USART1的中断标志

USART_GetITStatus

}

USART_GetITStatus用来获取串口的xx事件标志位

发送数据

USART_SendData(USART1, 0x55);

while (USART_GetFlagStatus(USRAT1, USART_FLAG_TXE) == RESET); //等待发送结束


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    stm单片机型号的意义 stm8和stm32的烧写程序的区别 stm8读取程序;stm单片机型号的意义 STM单片机型号一般由几个部分组成,每个部分都代表着不同的意义: 第一部分:STM或......
    cw32和stm32的区别;cw32和stm32的区别CW32和STM32是两种常见的单片机,分别由芯源半导体和STMicroelectronics公司生产。单片机是一种嵌入式系统,它集......
    stm32引脚的VCC与VDD如何连接;stm32单片机作为一种常见的嵌入式设备,是许多电子设备和系统中必不可少的一部分。而在单片机的设计和应用中,电源电压是一个非常重要的参数,其中VCC和VDD......
    arduino好还是单片机好,arduino和单片机的区别;很多初学者和我当初一样不知道arduino和单片机的区别。 其实我也是学完才知道arduino的存在,还好当初是直接学的51单片机,不然......
    普通单片机STM32单片机中堆栈的区别;学习STM32单片机的时候,总是能遇到“堆栈”这个概念。分享本文,希望对你理解堆栈有帮助。 对于了解一点汇编编程的人,就可以知道,堆栈......
    仿真功能,大家选择支持仿真功能芯片的开发板即可。 三.51单片机和52单片机的区别是什么? 51单片机和52单片机都属于8位单片机,但52单片机的资源更丰富,是51单片机的升级优化版本。 52单片机......
    hc32和stm32的区别;HC32和STM32是两个不同的单片机系列。HC32是华大基础电子有限公司(Holtek)生产的单片机,而STM32是意法半导体(STMicroelectronics......
    STM32单片机中Hex、Bin文件的区别及应用详解;STM32、51等单片机程序经过编译后,生成的hex文件、bin文件,它们都是单片机烧写文件,本文介绍它们的区别与应用。Hex文件Keil5中生......
    单片机烧录程序的几种常见方法;最近看到一个小伙伴问了一个比较基础的问题,大概就是问:单片机烧录程序常见方法有哪些? 下面就来说下常见的三种烧录程序的方法:ISP、IAP和ICP,以及它们的区别......
    让程序从开始处重新执行。 复位操作还会将一些寄存器、存储单元的值重新设置为初始的设定值,让单片机重新开始执行。 STM32单片机的三种复位方式的区别: 1)上电复位:是在单片机上电启动的时候进行复位的,不需......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>