STM32利用串口外设发送数据

今天2024.3.21日上午学习了一下基本的串口初始化,利用串口发送一个字节的数据,看时间也快11点了,上午就学习这么多吧,把上午的知识总结一下,串口初始化的过程:

看着图来编写串口初始化的过程:

//第一步:把USART和GPIO的时钟打开

//第二步:GPIO初始化TX复用输出RX输入

//第三步:初始化USART(9600波特率、8位字长、无校验、1位停止位、无流控,只有发送模式)

//第四步:发送开启USART,接收需要配置中断和NVIC

接着来学习一下串口标准库中的函数吧:

下面就是工程中的Serial.c的文件:

#include "stm32f10x.h"                  // Device header


void Serial_Init(void)
{
	//第一步:把USART和GPIO的时钟打开
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	//第二步:GPIO初始化TX复用输出RX输入
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出模式
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;        //因为只写发送,所以只初始化TX引脚就好了
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;  //速率50M
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	//第三步:初始化USART(9600波特率、8位字长、无校验、1位停止位、无流控,只有发送模式)
	USART_InitTypeDef USART_InitStruct;
	USART_InitStruct.USART_BaudRate = 9600;            //波特率
	USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;     //硬件流控  不使用
	USART_InitStruct.USART_Mode = USART_Mode_Tx;     //串口模式   发送模式
	USART_InitStruct.USART_Parity = USART_Parity_No;  //串口校验位   无校验
	USART_InitStruct.USART_StopBits = USART_StopBits_1;   //串口停止位   1位
	USART_InitStruct.USART_WordLength = USART_WordLength_8b;   //串口字长   8位
	USART_Init(USART1, &USART_InitStruct);
	
	//第四部:发送开启USART,接收需要配置中断和NVIC
	USART_Cmd(USART1, ENABLE);
}


// 串口发送一个字节的数据
void Serail_SendByte(uint8_t Byte)
{
	USART_SendData(USART1, Byte);                                 //发送传进来的一个字节的数据
	while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);  //等待传送寄存器为空。确认发送完成再结束。
	/*下次写入数据寄存器会自动清除发送完成标志位,故此循环后,无需清除标志位*/
}

下面是Serial.h的文件:

#ifndef __SERIAL_H
#define __SERIAL_H

void Serial_Init(void);
// 串口发送一个字节的数据
void Serail_SendByte(uint8_t Byte);

#endif

最后就是主函数main.c的文件了:

#include "stm32f10x.h"                  // Device header
#include "OLED.h"
#include "Serial.h"
#include "Delay.h"

uint8_t a=0x01;

int main(void)
{
	OLED_Init();       //oled  屏幕初始化
	Serial_Init();   //串口初始化
	
	
	
	while(1)
	{
		a++;
		Serail_SendByte(a);  //串口发送一个字节的0x42
		OLED_ShowHexNum(1,3,a,2);
		Delay_s(1);
	}
}

这样编译后下载到单片机中就能每隔1秒钟发送一个从1到255的十六进制数字了,发送完并在OLED上显示当前的数字,来看看最后电脑收到的串口数据吧:

由于是文本模式接收的数据所以有些是看不懂的字符,估计是阿斯克码中没有这个字符吧,下面是用十六进制的格式接收数据,来看看效果吧:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1-Flume中agent的source

Flume(1.11.0版本) 简介 概述 Flume本身是由Cloudera公司开发的后来贡献给了Apache的一套针对日志数据进行收集(collecting)、汇聚(aggregating)和传输(moving)的机制 Flume本身提供了简单且灵活的结构来完成日志数据的传输 Flume有两大版本&#x…

html5cssjs代码 033 SVG元素示例

html5&css&js代码 033 SVG元素示例 一、代码二、解释 一个SVG图形&#xff0c;该图形由一个椭圆、一个圆形和一个矩形组成。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><title>编程笔记 html5&css&js SVG元素示例…

uniApp中使用小程序XR-Frame创建3D场景(1)环境搭建

1.XR-Frame简介 XR-Frame作为微信小程序官方推出的3D框架&#xff0c;是目前所有小程序平台中3D效果最好的一个&#xff0c;由于其本身针对微信小程序做了优化&#xff0c;在性能方面比其他第三方库都要高很多。 2.与Three.js的区别 做3D小程序的同学们对Three.js一定不陌生…

利用Jmeter工具对服务器,数据库进行性能监控,压测,导出性能测试报告

Jmeter是Apache基金会旗下的一款免费,开源,轻量级的性能测试工具,主要针对web应用程序客户端/服务器进行性能测试.它可以分别测试静态、动态资源(Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等),它可以通过线程组来模拟数个用户,在一段时间内同时登录服务器,数个用…

P8786 [蓝桥杯 2022 省 B] 李白打酒加强版

我的代码&#xff1a; #include <iostream> using namespace std;int dp[101][101][101]; const int mod 1e9 7; //题中说了&#xff0c;答案要取模 int main() {int n, m; //定义遇到店n次&#xff0c;遇花m次cin >> n >> m;dp[0][0][2] 1; //因为题目…

SpringBoot 3整合Elasticsearch 8

这里写自定义目录标题 版本说明spring boot POM依赖application.yml配置新建模型映射Repository简单测试完整项目文件目录结构windows下elasticsearch安装配置 版本说明 官网说明 本文使用最新的版本 springboot: 3.2.3 spring-data elasticsearch: 5.2.3 elasticsearch: 8.1…

人脸表情识别系统项目完整实现详解——(三)训练MobileNet深度神经网络识别表情

摘要&#xff1a;之前的表情识别系统升级到v3.0版本&#xff0c;本篇博客详细介绍使用PyTorch框架来构建并训练MobileNet V3模型以进行实现表情识别&#xff0c;给出了完整实现代码和数据集可供下载。从构建数据集、搭建深度学习模型、数据增强、早停等多种技术&#xff0c;到模…

Tomcat介绍,Tomcat服务部署

目录 一、Tomcat 介绍 二、Tomcat 核心技术和组件 2.1、Web 容器&#xff1a;完成 Web 服务器的功能 2.2、Servlet 容器&#xff0c;名字为 catalina&#xff0c;用于处理 Servlet 代码 2.3、JSP 容器&#xff1a;用于将 JSP 动态网页翻译成 Servlet 代码 Tomcat 功能组件…

蓝桥杯-模拟-旋转图片

题目 思路 Python中range() 函数的使用介绍_python指定范围内的整数-CSDN博客 range(start, stop, step)&#xff1a;生成一个序列包含start到stop-1的整数&#xff0c;其中步长为step 代码 n, m map(int, input().split()) a [list(map(int, input().split())) for _ in…

3D轻量引擎HOOPS SDK:EDA应用程序高效开发利器

电子设计自动化&#xff08;EDA&#xff09;软件在现代工程实践中扮演着至关重要的角色。随着技术的不断进步和市场的竞争加剧&#xff0c;开发高效、可靠的EDA应用程序成为了行业内的一项迫切需求。在这一背景下&#xff0c;Tech Soft 3D的HOOPS SDK&#xff08;Software Deve…

易大师B版运势测算系统源码-八字周易运势塔罗-含视频搭建教程

2024最新易大师B版运势测算系统源码-八字周易运势塔罗等测算源码 基于上个版本再次做了数据优化和部分bug修复&#xff0c;青狐独家维护版本。 测算周易系统一直都是很好变现和运营的&#xff0c;玩法操作也比较简单&#xff0c;也很容易被百度收录推广。 大致功能&#xff1a…

如何让uni-app开发的H5页面顶部原生标题和小程序的顶部标题不一致?

如何让标题1和标题2不一样&#xff1f; 修改根目录下的App.vue&#xff08;核心代码如下&#xff09; <script>export default {onLaunch() {// 监听各种跳转----------------------------------------[navigateTo, redirectTo, reLaunch, switchTab, navigateBack, ].…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——自适应大邻域算法(ALNS)

基于python语言&#xff0c;采用经典自适应大邻域算法&#xff08;ALNS&#xff09;对 需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作&#xff0c;目前…

docker入门(九)—— docker网络详细介绍

docker 网络 准备工作&#xff1a;清空所有镜像和容器 docker rm -f $(docker ps -aq) docker rmi -f $(docker images -aq)docker0 网络 查看本地网络 ip addr[rootiZbp15293q8kgzhur7n6kvZ /]# ip addr# 本地回环网络 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc…

社交媒体的未来:探讨Facebook的发展趋势

引言 在数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。作为全球最大的社交媒体平台之一&#xff0c;Facebook一直在不断地追求创新&#xff0c;以满足用户日益增长的需求和适应科技发展的变革。本文将探讨Facebook在未来发展中可能面临的挑战和应对…

谷粒商城——缓存的概念

1. 使用缓存的好处&#xff1a;减少数据库的访问频率&#xff0c;提高用户获取数据的速度。 2. 什么样的数据适合存储到缓存中&#xff1f; ①及时性、数据一致性要求不高的数据&#xff0c;例如物流信息、商品类目信息 ②访问量大更新频率不高的数据(读多、写少) 3. 读模式…

把txt、pdf等文件转为一行一行的doccano数据集输入格式

文章目录 doccano 数据集导入简介代码实现代码运行结果代码公开 doccano 数据集导入 在Doccano 导入数据集时&#xff0c;使用TextLine的文件格式&#xff0c;导入的文件需要为一行一行文本的数据格式&#xff0c;每一行文本在导入Doccano后就是一条数据。 简介 主要工作说明…

docker镜像安装空间不足no space left on device

报错&#xff1a;Error processing tar file(exit status 1): open /usr/local/lib/libmkl_tbb_thread.so.1: no space left on device 原先docker模型保存位置&#xff1a; docker info -f ‘{{ .DockerRootDir}}’ docker 高点版本&#xff0c;这里26.0 解决参考&#xf…

评论家:大型语言模型可以通过工具交互式批评进行自我修正(ICLR2024)

1、写作动机&#xff1a; 大语言模型有时会显示不一致性和问题行为&#xff0c;例如产生幻觉事实、生成有缺陷的代码或创建令人反感和有毒的内容。与这些模型不同&#xff0c;人类通常利用外部工具来交叉检查和改进他们的初始内容&#xff0c;比如使用搜索引擎进行事实检查&am…

R语言Meta分析核心技术:回归诊断与模型验证

R语言作为一种强大的统计分析和绘图语言&#xff0c;在科研领域发挥着日益重要的作用。其中&#xff0c;Meta分析作为一种整合多个独立研究结果的统计方法&#xff0c;在R语言中得到了广泛的应用。通过R语言进行Meta分析&#xff0c;研究者能够更为准确、全面地评估某一研究问题…