STM32利用串口外设发送数据

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

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

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

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

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

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

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

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

#include "stm32f10x.h"                  // Device headervoid 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;  //速率50MGPIO_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,接收需要配置中断和NVICUSART_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_Hvoid 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);  //串口发送一个字节的0x42OLED_ShowHexNum(1,3,a,2);Delay_s(1);}
}

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

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

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

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

相关文章

GPT-4 vs. ChatGPT:19个弱项问题(多步逻辑推理、概念间接关联)的横向对比

测试对比:在逻辑推理和概念关联方面,GPT-4 显著优于 ChatGPT,准确率从37%提升至100%。智力水平:GPT-4 的思维智力表现可能超过了95%的人。技术进步:短时间内,GPT-4 显著进步,尤其在逻辑能力和多…

超越 GPT-4V 和 Gemini Pro!HyperGAI 发布最新多模态大模型 HPT,已开源

随着AI从有限数据迈向真实世界,极速增长的数据规模不仅赋予了模型令人惊喜的能力,也给多模态模型提供了更多的可能性。OpenAI在发布GPT-4V时就已经明确表示: 将额外模态(如图像输入)融入大语言模型(LLMs&am…

QT网络编程之实现UDP广播发送和接收(多网卡,多IP)

一.UDP广播查找IP问题 有时候电脑上有多个网口,也就有多个IP,如何把每个IP连接的设备的IP全部找出来,并做成一个下拉列表形式显示出来 二.UDP广播 如果向全网段发送广播消息,那么广播地址为:255.255.255.255; 广播消息接收方需要绑定0.0.0.0地址并监听指定端口即可收到…

java JVM详解(持续更新)

JVM定义 JVM结构 类装载子系统 双亲委派模型 运行时数据区 方法区(Method Area) 堆区(Heap) 虚拟机栈区 程序计数区 执行引擎子系统 垃圾回收机制 内存分代机制 JVM调优 JVM面试题 JVM定义 JVM它是jre的一部分,也…

静态路由实验(HCIP部分)

1、拓扑信息 2、需求分析 3、IP规划 4、配置截图 5、测试 1、拓扑信息 2、需求分析 1、 R6为isp,接口IP地址均为公有地址;该设备只能配置IP地址,之后不能再对其进行其他任何配置; 分析: R6只需配置一个环回和链路物理接口IP即可 2 、R1-R5为…

导出excel按动态表头导出

一、实现代码 使用Map方式添加head头,对应填充值 /*** 导出查看发车明细* param query* return*/Overridepublic ExportResult monthResourcePlanDepartureProgressDetailsExportExcelData(ResourceSituationListQuery query) {log.info("导出参数:{}",Ds…

FPGA开源项目分享——基于FPGA加速的热扩散模拟器

导语 今天继续分享康奈尔大学FPGA课程ECE 5760的典型案例——基于FPGA加速的热扩散模拟器。 (更多其他案例请参考网站: Final Projects ECE 5760) 1. 项目概述 项目网址 https://people.ece.cornell.edu/land/courses/ece5760/FinalProje…

多区域ISIS路由计算

多区域ISIS路由计算: 1、骨干区域是如何访问非骨干区域?(R4如何学习到200.200/32的路由?) 1.1 默认情况下,L1/2级别路由器会将L1级别LSDB中的叶子信息,作为自己L2级别实节点的叶子信息添加到L2的…

旅游小程序的市场与发展趋势

随着科技的发展,移动互联网已经成为我们生活中不可或缺的一部分。在这个时代,小程序已经成为了一种新的趋势,尤其是在旅游行业。那么,旅游小程序有哪些市场,发展趋势又怎么样呢? 一、旅游小程序的市场 1. 用…

Go语言实现SSE中转demo

Go语言实现SSE中转demo 文章概要:本文主要通过一个demo来介绍如何使用Go语言实现SSE中转。 本文内容来自:谷流仓AI - ai.guliucang.com 前提 已安装Go语言环境(参考这篇文章:Macbook安装Go以及镜像设置) 创建项目 创建项目目录…

3D高斯泼溅的崛起

沉浸式媒体领域正在以前所未有的速度发展,其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景,并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。 在本文中,我们将通过与摄影测量和 NeRF 等前辈进…

支持向量和非支持向量

一、支持向量 支持向量是指那些距离超平面最近的且满足一定条件的训练样本点。 在分类问题中,支持向量对于确定分类边界起着关键作用。 对于线性可分的情形,位于间隔边界上的样本点被称为硬间隔的支持向量;而对于线性不可分的情形&#xf…

被指标化后的生活

概述 病来如山倒,不生病,感觉自己是个英雄,生病后,感觉自己狗屁不是。 生老病死本是人生常态,但生与死只只一瞬间,很少人能被有意感知! 但老与病,他们两个却是一个渐渐变化的过程…

.NET 依赖注入和配置系统

文章目录 依赖注入DI几个概念.NET 中使用DI生命周期IServiceProvider的服务定位器方法 配置系统Json文件配置绑定类读取配置 依赖注入 依赖注入(Dependency Injection,DI)是控制反转(Inversion of Control,IOC&#xf…

关于uniapp上使用websocket在H5能用,在真机不能用的问题

不要用本地电脑开的websocket来连接,真机(手机端)连不到本地websocket。 uni.connectSocket({url: ws://localhost:3000/chat}); 解决办法: 部署到服务器上面,用一个公网的websocket地址,真机上面可以正…

Macbook安装Go以及镜像设置

Macbook安装Go 文章概要:本文主要介绍了在MacOS上安装Go的步骤 本文内容来自:谷流仓AI - ai.guliucang.com 有两种方式安装go: 通过homebrew安装通过Go官网直接下载安装文件安装 1. 通过homebrew安装 brew update && brew install…

企业用大模型如何更具「效价比」?百度智能云发布5款大模型新品

服务8万企业用户,累计帮助用户精调1.3万个大模型,帮助用户开发出16万个大模型应用,自2023年12月以来百度智能云千帆大模型平台API日调用量环比增长97%...从一年前国内大模型平台的“开路先锋”到如今的大模型“超级工厂”,百度智能…

从相机空间到像素空间的投影和反投影原理和代码

目录 从相机空间到像素空间的投影 效果 ​编辑 公式 ​编辑 代码 像素空间到相机空间的反投影 记录一下从相机空间到像素空间的投影(3D-->2D)和像素空间到相机空间的反投影(2D-->3D)。 推荐blog:SLAM入门之视…

获取kafka中topic偏移量和消费偏移量

1、kafkaclient版本1.0.1 public class MutiThreadScheduleTask {Resource private KafkaConsumer<String, String> kafkaConsumer;public void test(String topic) {//查询 topic partitionsList<TopicPartition> topicPartitionList new ArrayList<>();L…

smpl渲染工具

根据3d姿态预测smpl参数 GitHub - Jeff-sjtu/HybrIK: Official code of "HybrIK: A Hybrid Analytical-Neural Inverse Kinematics Solution for 3D Human Pose and Shape Estimation", CVPR 2021 GitHub - woo1/Texture_visualize_smpl: smpl texture visualizatio…