STM32实战篇:使用USART发送/接收数据

news2024/9/9 7:36:37

发送一个数据

#include "stm32f10x.h"                  // Device header

int main()
{
	//
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//开启GPIOB时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开启AFIO时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //开启USART时钟
	
	//GPIO初始化:Rx和Tx
	GPIO_InitTypeDef GPIO_InitStructO;
	GPIO_InitStructO.GPIO_Pin=GPIO_Pin_6;
	GPIO_InitStructO.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_InitStructO.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_Init(GPIOB, &GPIO_InitStructO);
	
	GPIO_InitTypeDef GPIO_InitStructI;
	GPIO_InitStructI.GPIO_Pin=GPIO_Pin_7;
	GPIO_InitStructI.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_InitStructI.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_Init(GPIOB, &GPIO_InitStructI);
	
	//重映射USART1的Tx和Rx
	GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
	
	//初始化USART1
	USART_InitTypeDef USART_InitStruct;
	USART_InitStruct.USART_BaudRate=9600;
	USART_InitStruct.USART_WordLength=USART_WordLength_8b;
	USART_InitStruct.USART_StopBits=USART_StopBits_1;
	USART_InitStruct.USART_Parity=USART_Parity_No;
	USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
	USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
	
	USART_Init(USART1, &USART_InitStruct);
	
	//闭合USART1的总开关
	USART_Cmd(USART1, ENABLE);

	while(1)
    {
        while(USART_GetITStatus(USART1, USART_FLAG_TXE)==RESET);//等待TDR寄存器清空
	    USART_SendData(USART1, 0x5a);//写入要发送的数据
	    while(USART_GetITStatus(USART1, USART_FLAG_TC)==RESET);//等待数据发送完成
    }
}

连续发送数据

while(1)
{
	uint8_t a[]={0,1,2,3,4,5};
	uint32_t i;
	
	for(i=0;i<sizeof(a)/sizeof(uint8_t);i++){
		while(USART_GetITStatus(USART1, USART_FLAG_TXE)==RESET);//等待TDR寄存器清空
		USART_SendData(USART1, a[i]);//写入要发送的数据
	}
	while(USART_GetITStatus(USART1, USART_FLAG_TC)==RESET);//等待数据发送完成
}


发送字符

while(1)
{
  while(USART_GetITStatus(USART1, USART_FLAG_TXE)==RESET);//等待TDR寄存器清空
  USART_SendData(USART1, 'a');//写入要发送的数据
  while(USART_GetITStatus(USART1, USART_FLAG_TC)==RESET);//等待数据发送完成
}

在发送字符时也可以直接使用其对应的ASCLL码,例如: USART_SendData(USART1, 0x61);


发送字符串

while(1)
{
    const char*str="Hello World";
    uint32_t i;
    for(i=0;i<strlen(str);i++)
    {
	    while(USART_GetITStatus(USART1, USART_FLAG_TXE)==RESET);//等待TDR寄存器清空
	    USART_SendData(USART1, str[i]);//写入要发送的数据
    }
    while(USART_GetITStatus(USART1, USART_FLAG_TC)==RESET);//等待数据发送完成

}

接收数据

while(1)
{
    while(USART_GetITStatus(USART1, USART_FLAG_RXNE)==RESET);
    char c=USART_ReceiveData(USART1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络模型的使用以及修改 pytorch

VGG16_Weights.DEFAULT 或 VGG16_Weights.IMAGENET1K_V1&#xff1a;使用在 ImageNet 上训练的权重 import torchvision from torch import nnvgg16_false torchvision.models.vgg16() vgg16_true torchvision.models.vgg16(weightsDEFAULT) print(vgg16_true) train_data …

vue3项目结构梳理:

总览 1.vscode文件&#xff1a; 通常用于存放Visual Studio Code编辑器的插件的配置 2.node_moudles文件夹&#xff1a; 这个文件夹包含了项目所需的所有npm依赖包。&#xff08;需要在根目录下执行npm i命令安装这个文件夹&#xff09; 或者在项目根目录&#xff08;packa…

深度学习论文: SAM 2: Segment Anything in Images and Videos

深度学习论文: SAM 2: Segment Anything in Images and Videos SAM 2: Segment Anything in Images and Videos PDF:https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/ PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks …

前端开发不得不知道的那些事

文章目录 一、技能提升篇vueuseJavaScript中文网JavaScript.infoRxJsWeb安全学习书栈网码农之家 二、UI篇iconfont&#xff1a;阿里巴巴矢量图标库IconPark3dicons美叶UndrawError 404摹克 三、CSS篇You-need-to-know-cssCSS TricksAnimate.cssCSS ScanCSS Filter 四、颜色篇中…

滑模变结构控制仿真实例(s-function代码详解)

目录 一、建立系统数学模型二、控制器设计1. 设计滑模面(切换面)2.设计控制器 u3. 稳定性证明 三、 Matlab 仿真1. s-function 模型2. 主要代码3. 仿真结果(采用符号函数sign(s))4. 仿真结果(采用饱和函数sat(s)) 一、建立系统数学模型 { x ˙ 1 x 2 x ˙ 2 x 3 x ˙ 3 x 1 …

vue3中Cesium离线地图

最近的需求需要在vue3发布Cesium离线地图&#xff0c;之前openlayers我是在本地开启http server发布的地址可以使用&#xff0c;但是Cesium会报跨域错误&#xff0c;在网上查了一下&#xff0c;后用的是nginx代理&#xff0c;下面我记录一下自己的方法。 1.判断是否联网 expo…

Linux、Windows、Mac 系统安装 Nginx 及配置命令全攻略

一、Linux 系统安装 Nginx 及配置 &#xff08;一&#xff09;安装依赖包 在 Linux 系统中安装 Nginx 前&#xff0c;首先需要安装依赖包。以下是常见的依赖包安装命令&#xff1a; yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 若安装过程中出现错…

力扣高频SQL 50题(基础版)第三十二题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十二题1789.员工的直属部门题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十二题 1789.员工的直属部门 题目说明 表&#xff1a;Employee ------------------…

Yolov8训练时正常,但验证时Cuda out of memory问题的解决方案(非完全解决)

【问题描述】 在Yolov8训练时&#xff0c;训练中正常&#xff0c;但每轮训练中做验证时报错Cuda out of memory&#xff1a; 【解决方案】 往下翻有具体的报错信息&#xff1a; 可知是显存爆了。在没有条件更换训练显卡的情况下&#xff0c;笔者尝试增加with torch.no_grad…

TiDB Hackathon 2024丨用 TiDB 构建未来的 AI 创新应用, 瓜分超 ¥210,000 奖金池!

2024 TiDB Future App Hackathon 来啦&#xff01;这是第八届 TiDB Hackathon&#xff0c;TiDB Hackathon 自举办以来&#xff0c;已累计参赛人数超过 3000 人 &#xff01;回顾去年的 TiDB Hackathon 赛事&#xff0c;有来自 88 个国家近 1500 名小伙伴参加&#xff0c;提交了…

IDEA某个项目被同事提交的代码导致不能进入Debug了,不是IDEA的问题。千万要避坑!

刚开始我发现突然不能进入debug了&#xff0c;打上去后就立马边灰了&#xff0c;我以为是我IDEA的问题&#xff0c;后来我换了其他项目都能正常进入debug. 而且后续&#xff0c;这个项目的其他同事也都不能进入debug了。 我就怀疑是项目中有人提交了代码导致的。 后来查…

必备插件自取 vue3.0 在vscode提升编码效率

一些vue开发中用到的插件&#xff0c;抽空总结一下&#xff0c;一是方便自己查看&#xff0c;另外是供其他需要的同学参考。在开发vue项目中&#xff0c;无论用什么编辑器一些好用的插件对我们来讲或许是必要的&#xff0c;因为好的插件既能方便我们编码&#xff0c;又能提升开…

文件解析漏洞--IIS--Vulhub

文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一&#xff1a;目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹&#xff0c;其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…

PSO求解函数最小值的MATLAB例程|MATLAB源代码

本篇文章适合PSO入门&#xff0c;进阶的可能会觉得太简单的。 目录 PSO例程作用运行结果代码函数解释 例程修改tips PSO Particle Swarm Optimization&#xff0c;粒子群优化算法&#xff0c;通过模拟鸟群或鱼群的行为来寻找最优解。在计算时通过对一群粒子的位置和速度进行迭…

Stable Diffusion Windows本地部署超详细教程(手动+自动+整合包三种方式)

2022年作为AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;时代的元年&#xff0c;各个领域的AIGC技术都有一个迅猛的发展&#xff0c;给工业界、学术界、投资界甚至竞赛界都注入了新的“AI活力”与“AI势能”。 其中在AI绘画领域&#xff0c;Stable D…

内部类练习题

代码&#xff1a; public static void main(String[] args) {A anew A();a.f(); } class A{private String name"A";public void f(){class B{private String name"B";public void show(){System.out.println("A姓名为&#xff1a;"A.this.name…

智慧校园实训管理:打造高效实验项目管理系统

在智慧校园的实训管理框架中&#xff0c;实验项目管理功能是培养学生实践能力和创新精神的关键一环。这一功能通过数字化手段&#xff0c;实现了实验项目的全流程管理&#xff0c;从项目设计、资源调配、过程监控到成果评估&#xff0c;确保了实训活动的高效开展和教学质量的稳…

LabVIEW打开的视频格式IMAQ AVI Open

LabVIEW打开的视频格式IMAQ AVI Open LabVIEW所支持的视频解码器是有限的&#xff0c;不能支持所有的视频解码器。如果解码器选择的不正确&#xff0c;会出现的错误。 错误提示信息如下&#xff1a; Error -1074396009 occurred at IMAQ AVI Open Possible reason(s): An inter…

人工智能大模型发展带来的风险挑战和对策

经过近70年的发展&#xff0c;人工智能技术发展经历了三次起伏&#xff0c;2022年以来&#xff0c;以ChatGPT、Sora等为代表的预训练大模型持续取得突破&#xff0c;推动着人工智能技术从感知向认识&#xff0c;从分析判断式向生成式&#xff0c;从专用向通用进入快速发展的新阶…

提供一个下载国外DockerHub镜像的办法

由于众所周知的一些问题&#xff0c;国内现在下载国外的镜像比较难。尤其是比较新的版本的时候。 比如阿里云加速器的镜像库&#xff0c;skywalking-oap的最新版本也只有8.9&#xff0c;有时候不满足业务需要。官网目前最新10.0.1。很多情况下我们需要9以上版本。 提供几个办…