首页 > 其他分享 >【微处理器系统原理与应用设计第十三讲】通用同/异步收发器USART轮询模式应用设计

【微处理器系统原理与应用设计第十三讲】通用同/异步收发器USART轮询模式应用设计

时间:2024-09-19 13:23:30浏览次数:3  
标签:函数 USART 轮询 收发器 GPIOA 发送数据 数据 USART2

USART提供两设备之间的串行双工通信,并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。

一、功能需求

实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART(串口)与用户设备(上位机)相连。上位机每次发送一个字符后等待测控设备将收到的字符回传到上位机。对于测控设备而言,提供一种回传功能,即收到一个字符就立刻发送出去。

二、设计思路

管脚PA2与PA3分别设置为USART2的TX和RX信号,在通信过程中,USART检查接受状态,一旦收到数据,立刻将新数据发送出去,如此反复执行。

三、程序设计

(1)USART初始化函数

PCLK为16MHz,波特率为9600,BRR寄存器的值为PCLK/RBaud = 1667。

void UartInit(void)
{
	RCC->AHB1ENR|=1; //使能GPIOA时钟
	RCC->APB1ENR|=1<<17; //使能USART2时钟
	//配置PA2,PA3为复用、推挽输出、高速
	GPIOA->MODER = (GPIOA->MODER&~(0xF<<4))|(0xA<<4);
	GPIOA->OTYPER&=~(0xF<<4);
	GPIOA->OSPEEDR = (GPIOA->OSPEEDR&~(0xF<<4))|(0xA<<4);
	//设置AFRL寄存器,PA2,PA3复用模式为AF7,分别为USART的TX和RX
	GPIOA->AFR[0] = (GPIOA->AFR[0]&~(0xFF<8))|(0x77<8);
	USART2->BRR = 1667;
	USART2->CR1 = (1<<13)|(1<<3)|(1<<2); //使能收发功能
}

(2)串口数据接收函数

UartRx函数用来获取已经接收到的数据,仅当收到数据时才读取数据并成功返回,未收到返回时返回失败。

int UartRx(char* prxd)
{
	if(!(USART2->SR&(0x1<<5)))
		return 0;
	*prxd = (char)USART2->DR; //对指针所指的变量赋值
	return 1;
}

 (3)数据发送函数

UartTx函数用来发送数据,仅当发送数据寄存器空了才写入数据并成功返回,发送数据寄存器未空时返回失败。

int UartTx(char txd)
{
	if(!(USART2->SR&(0x1<<7)))
		return 0;
	USART2-DR = txd;
	return 1;
}

标签:函数,USART,轮询,收发器,GPIOA,发送数据,数据,USART2
From: https://blog.csdn.net/daviddou2022/article/details/142345120

相关文章

  • STM32F407单片机编程入门(七)USART串口485通讯实战含源码
    文章目录一.概要二.USART串口基本介绍三.STM32单片机USART内部结构图四.USART内部信号流向五.USART示波器信号解析六.485通讯基本概念七.CubeMX配置一个USART数据收发例程进行485通讯实验八.工程源代码下载九.小结一.概要USART(UniversalSynchronous/AsynchronousR......
  • Java数据库轮询
    在Java中,数据库轮询(DatabasePolling)通常指的是定期查询数据库以检查是否有新的数据或者数据状态的变化。这种方式在某些场景下是有用的,比如在需要实时监控数据库变化的应用中。不过,轮询并不是一种高效的解决方案,因为它可能会导致不必要的资源消耗,特别是在没有变化发生的时候。以......
  • GT收发器
    1.GT触发器的IP使用第一页 第二页 第三页GTPIP提供了两种解决跨时钟域的方法:(1)RXElasticBuffer(RX弹性缓冲器);(2)RXPhaseAlignment(RX相位对齐电路),两种方法的比较:RXElasticBuffer优点在于稳定,易使用,执行相位校准的速度快,但是需要时钟和通道进行绑定;RXPhaseAlignme......
  • 腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 短视频app源码,借助轮询优化交互体验
    业务背景在短视频app源码前后端数据交互场景下,使用最多的一种方式是客户端发起HTTP请求,等待服务端处理完成后响应给客户端结果。但在一些场景下,短视频app源码服务端对数据的处理需要较长的时间,比如提交一批数据,对这批数据进行数据分析,将最终分析结果返回给前端。如果采用一......
  • 三、STM32F103标准库DMA+USART接收不定长数据
    项目中常用到串口通信,当需要使用串口中断接不定长数据时,可以参考以下示例:本实例使用DMA+USART空闲中断来进行不定长数据接受,在数据接收完成后将数据透传。结果将通过另一个串口信息显示。1、主函数配置#include"stm32f10x.h"#include"printfsupport.h"#include"usar......
  • 【STM32 Blue Pill编程】-UART数据接收与发送(轮询模式)
    UART数据接收与发送(轮询模式)文章目录UART数据接收与发送(轮询模式)1、STM32的UART端口2、串口数据发送2.1硬件准备及接线2.2串口配置2.3串口数据发送实现3、串口数据接收4、printf函数重定向每当我们进行嵌入式系统应用程序开发时,我们都需要使用串......
  • STM32笔记(10)——USART
    USART(UniversalSynchronous/AsynchronousReceiver/Transmitter)通用同步/异步收发器USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里自带波特率发生......
  • 设置 Nginx、MySQL 日志轮询
    title:设置Nginx、MySQL日志轮询tags:author:ChingeYangdate:2024-8-301.Nginx设置日志轮询机器直接安装的:/etc/logrotate.d/nginx/var/log/nginx/*.log{dailymissingokrotate30compressdelaycompressno......
  • STM32学习记录-08-USART串口
    1通信接口        通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统        通信协议:制定通信的规则,通信双方按照协议规则进行数据收发                USART:TX数据发送、RX数据接收        I2C:SCL时钟、SDA数据  ......