stm32串口程序讲解_RS232串口

stm32串口程序讲解_RS232串口(二) STM32 串口通信基础知识1、串口通信简介通信接口的两种方式:并行通信-传输原理:数据各个位同时传输。-优点:速度快-缺点:占用引脚资源多串行通信-传输原理:数据按位顺序传输。-优点:占用引脚资源少-缺点:速度相对较慢目前使用最多的还是串行通信,即便速度相对较慢,所以下面都是讲解串

(二) STM32 串口通信基础知识   1、串口通信简介   通信接口的两种方式:   并行通信-传输原理:数据各个位同时传输。-优点:速度快-缺点:占用引脚资源多   串行通信-传输原理:数据按位顺序传输。-优点:占用引脚资源少-缺点:速度相对较慢   目前使用最多的还是串行通信,即便速度相对较慢,所以下面都是讲解串行通信。   ①串口通信分类:   串口通信按照数据传送方向,分为:
stm32串口程序讲解_RS232串口
stm32串口程序讲解_RS232串口   (1)单工:数据传输只支持数据在一个方向上传输(2)半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信(3)全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力   ②STM32的串行通信的方式   同步通信:带时钟同步信号传输。异步通信:不带时钟同步信号。
stm32串口程序讲解_RS232串口
stm32串口程序讲解_RS232串口   注意:一般所说的串口是USART(通用同步异步收发器),同步异步都支持的。STM32F10x系列芯片,包含3个USART和2个UART   2、STM32的串口通信原理   串口通信是单片机最基本的功能,很多传感器模块与单片机的连接都会用到串口功能。串口通信,顾名思义就是将一整条的内容,切成一“串”个体来发送或接收。发送的核心思想是:将字符串中的一个字符写到一个寄存器中(此寄存器只能存一个字符),写入后会自动通过串口发送,发送结束再写入下一个字符。接收时会直接装入单片机缓冲区的一个字符型数组中,由程序依次读这个数组。
stm32串口程序讲解_RS232串口
stm32串口程序讲解_RS232串口   上图是串口数据发送接收的过程做一个简单的图示。收发控制器根据寄存器配置,对数据存储转移部分的移位寄存器进行控制。当需要发送数据时,内核或DMA外设把数据从内存(变量)写入到发送数据寄存器TDR后,发送控制器将自动把数据从TDR加载到发送移位寄存器,然后通过串口线TX,把数据一位一位地发送出去,在数据从TDR转移到移位寄存器时,会产生发送寄存器TDR已空事件TXE,当数据从移位寄存器全部发送出去时,会产生数据发送完成事件TC,这些事件可以在状态寄存器中查询到。而接收数据则是一个逆过程,数据从串口线RX一位一位地输入到接收移位寄存器,然后自动地转移到接收数据寄存器RDR,最后用内核指令或DMA读取到内存(变量)中。发送完毕或者接收完毕都会有相应的状态或者事件,我们写代码时就可以通过这些事件来判断是否接收或者发送完毕,然后做出下一步。   3、常用的串口相关寄存器   ①USART_SR状态寄存器这个寄存器用到了10个位,也就代表有10中状态标志,每个标志都可以作为中断的标志位,库函数的定义如下:   
stm32串口程序讲解_RS232串口
stm32串口程序讲解_RS232串口   
stm32串口程序讲解_RS232串口
stm32串口程序讲解_RS232串口   ②USART_DR数据寄存器发送数据寄存器是TDR,接收数据寄存器是RDR,都只用了前8位,发送和接收用到以下两个函数:   void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
stm32串口程序讲解_RS232串口
stm32串口程序讲解_RS232串口   4、串口配置的一般步骤   串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP串口参数初始化:USART_Init();开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)NVIC_Init();USART_ITConfig();使能串口:USART_Cmd();编写中断处理函数:USARTx_IRQHandler();串口数据收发:void USART_SendData();//发送数据到串口,DRuint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据串口传输状态:FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);   欢迎我的:物联网技术猿我可以帮你免费下载csdn积分资料!!

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/41018.html

(0)
上一篇 2024年 9月 7日 下午2:26
下一篇 2024年 9月 7日 下午2:32

相关推荐

关注微信