STM32自学记录(十)

STM32自学记录


文章目录

  • STM32自学记录
  • 前言
  • 一、USART杂记
  • 二、实验
    • 1.学习视频
    • 2.复现代码
  • 总结


前言

USART


一、USART杂记

通信接口:通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发。
定时器计数、PWM输出、AD采集
硬件电路:简单双向串口通信有两根通信线:发送端Tx和接收端Rx。
Tx与Rx要交叉连接。
当只需要单向的数据传输时,可以只接一根通信线。
当电平标准不一致时,需要加电平转换芯片。
电平标准:电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
TTL电平:+3.3V或+5V表示1,0V表示0
RS232电平:-3~-15V表示1,+3-+15V表示0
RS485电平:两线压差+2~+6V表示1,-2- -6V表示0(差分信号,抗干扰)
串口参数及时序:波特率:串口通信的速率;起始位:标志一个数据帧的开始,固定为低电平;数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行。校验位:用于数据验证,根据数据位计算得来;停止位:用于数据帧间隔,固定为高电平。
奇偶校验、CRC校验
Tx引脚输出定时翻转的高低电平;Rx引脚定时读取引脚的高低电平。
USART通用同步/异步收发器
USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成的数据帧时序,从Tx引脚发送出去,也可自动接收Rx引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。
自带波特率发生器,最高达4.5Mbits;
可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
可选校验位(无校验/奇校验/偶校验)
支持同步模式,硬件流控制,DMA,智能卡,Irda,LIN
STM32F103C8T6 USART资源:USART1、USART2、USART3
状态寄存器有两个标志位比较重要:TXE发送寄存器空、RXNE接收寄存器非空
波特率发生器其实就是分频器;APB时钟进行分频,得到发送和接收移位的时钟。
空闲帧–1,断开帧–0,局域网协议用,串口不用
9位字节,有校验;9位字节,无校验。
波特率发生器:发送器和接收器的波特率由波特率寄存器BRR里的DIV确定。
计算公式:波特率=Fpclk2/1/(16*DIV)
USART寄存器:状态寄存器(USART_SR)+数据寄存器(USART_DRR)+波特比率寄存器(USART_BRR)+控制寄存器(USART_CR)+…
每个外设都有:状态寄存器SR(存放各种标志位);数据寄存器DR(存放最关键的数据);配置寄存器CR(存放各种配置参数)
数据模式:HEX模式/十六进制模式/二进制模式(以原始数据的形式显示)/文本模式/字符模式(以原始数据编码后的形式显示)
FlyMcu是串口下载,STLINK Utility是STLINK下载。
串口下载——配置工程,生成一个HEX文件。
状态机
STM32只有在刚复位时才会读取Boot引脚;程序运行之后,切换Boot引脚是无效的。

通信接口:
在这里插入图片描述

硬件电路:
在这里插入图片描述

串口参数及时序:
在这里插入图片描述

USART框图:
在这里插入图片描述

USART基本结构:
在这里插入图片描述

数据帧:
在这里插入图片描述

起始位侦测:
在这里插入图片描述

数据采样:
在这里插入图片描述

波特率发生器:
在这里插入图片描述

数据模式:
在这里插入图片描述

printf函数:
在这里插入图片描述

UTF8不乱码方案:打开工程选项,C/C++,杂项控制栏,添加–no-multibyte-chars
在这里插入图片描述

HEX数据包:
在这里插入图片描述

文本数据包:
在这里插入图片描述

HEX数据包接收:
在这里插入图片描述

文本数据包接收:
在这里插入图片描述

生成HEX文件:
在这里插入图片描述
在这里插入图片描述

FlyMcu软件使用:
在这里插入图片描述
配置BOOT0为1,然后按复位键;软件按开始编程
在这里插入图片描述
下面操作适用于批量测试程序:下载完直接跳转运行程序,当次有效,适用于测试程序
在这里插入图片描述

二、实验

1.学习视频

B站学习视频:https://www.bilibili.com/video/BV1th411z7sn?spm_id_from=333.788.videopod.episodes&vd_source=a329b5512bc531099df1a823202af19c&p=25

2.复现代码

百度网盘链接:https://pan.baidu.com/s/1hNZbjRHVqfOgfw_L61BHAg
提取码:opjb


总结

单片机只是纸老虎,只管去做就好。

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

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

相关文章

Linux --- 如何安装Docker命令并且使用docker安装Mysql【一篇内容直接解决】

目录 安装Docker命令 1.卸载原有的Docker: 2.安装docker: 3.启动docker: 4.配置镜像加速: 使用Docker安装Mysql 1.上传文件: 2.创建目录: 3.运行docker命令: 4.测试: 安装…

Linux磁盘空间使用率100%(解决删除文件后还是显示100%)

本文适用于,删除过了对应的数据文件,查看还是显示使用率100%的情况 首先使用df -h命令查看各个扇区所占用的情况 一、先对系统盘下所有文件大小进行统计,是否真的是数据存储以达到了磁盘空间 在对应的扇区路径下使用du -sh * | sort -hr 命…

Python——批量图片转PDF(GUI版本)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…

IDEA查看项目依赖包及其版本

一.IDEA将现有项目转换为Maven项目 在IntelliJ IDEA中,将现有项目转换为Maven项目是一个常见的需求,可以通过几种不同的方法来实现。Maven是一个强大的构建工具,它可以帮助自动化项目的构建过程,管理依赖关系,以及其他许多方面。 添加Maven支持 如果你的项目还没有pom.xm…

HTML 属性

HTML 属性 HTML(超文本标记语言)是构建网页的基础,而HTML属性则是赋予HTML元素额外功能和样式的关键。本文将详细介绍HTML属性的概念、常用属性及其应用,帮助您更好地理解和使用HTML。 一、HTML属性概述 HTML属性是HTML元素的组成部分,用于描述元素的状态或行为。属性总…

【C++八股】 前置 ++i vs. 后置 i++ 的区别

在 C 中&#xff0c; 运算符有前置 i 和后置 i 两种方式&#xff0c;它们都能让变量自增 1&#xff0c;但在执行顺序、性能、应用场景上有所不同。 1. i vs. i 对比表 2. 代码示例 #include <iostream> int main() {int a 5, b 5;std::cout << "a "…

Deepseek-v3 / Dify api接入飞书机器人go程序

准备工作 开通了接收消息权限的飞书机器人&#xff0c;例如我希望用户跟飞书机器人私聊&#xff0c;就需要开通这个权限&#xff1a;读取用户发给机器人的单聊消息 im:message.p2p_msg:readonly准备好飞书机器人的API key 和Secretdeepseek-v3的api keysecret&#xff1a;http…

vue动态table 动态表头数据+动态列表数据

效果图: <template><div style"padding: 20px"><el-scrollbar><div class"scrollbar-flex-content"><div class"opt-search"><div style"width: 100px"> </div><div class"opt-b…

Vue(4)

一.组件的三大组成部分-注意点说明 &#xff08;1&#xff09;scoped样式冲突 默认情况&#xff1a;写在组件中的样式会全局生效 → 因此很容易造成多个组件之间的样式冲突 ①全局样式&#xff1a;默认组件中的样式会作用到全局 ②局部样式&#xff1a;可以给组件加上scoped属…

python-leetcode 23.回文链表

题目&#xff1a; 给定单链表的头节点head,判断该链表是否为回文链表&#xff0c;如果是&#xff0c;返回True,否则&#xff0c;返回False 输入&#xff1a;head[1,2,2,1] 输出&#xff1a;true 方法一&#xff1a;将值复制到数组中后用双指针法 有两种常用的列表实现&#…

INFINI Labs 产品更新 - Easysearch 增强 Rollup 能力,Console 完善 TopN 指标等

INFINI Labs 产品更新发布&#xff01;此次更新&#xff0c;Easysearch 增强 Rollup 能力&#xff0c;支持更多的聚合方式&#xff1b;Console 完善了 TopN 的指标&#xff0c;支持自定义视图&#xff0c;并内嵌视图模板&#xff1b;Gateway 进行了多处优化以及修复相关 Bug 等…

仿 RabbitMQ 实现的简易消息队列

文章目录 项目介绍开放环境第三⽅库介绍ProtobufMuduo库 需求分析核⼼概念实现内容 消息队列系统整体框架服务端模块数据管理模块虚拟机数据管理模块交换路由模块消费者管理模块信道&#xff08;通信通道&#xff09;管理模块连接管理模块 客户端模块 公共模块日志类其他工具类…

Node.js开发属于自己的npm包(发布到npm官网)

在 Node.js 中开发并发布自己的 npm 包是一个非常好的练习&#xff0c;可以帮助我们更好地理解模块化编程和包管理工具&#xff0c;本篇文章主要阐述如何使用nodejs开发一个属于自己的npm包&#xff0c;并且将其发布在npm官网。在开始之前确保已经安装了 Node.js 和 npm。可以在…

二、通义灵码插件保姆级教学-IDEA(使用篇)

一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细&#xff0c;感觉很强大有木有&#xff0c;关键还会生成流程图&#xff0c;对程序员理解业务非常有帮忙&#xff0c;基本能做到哪里不懂点哪里。…

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架&#xff0c;可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序&#xff0c;比如 控制台工具和服务器。Qt是面向对象的框架&#xff0c;使用特殊的代…

【数据结构】双向链表(真正的零基础)

链表是一种物理存储单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过指针的链接来实现的&#xff01;在上篇我们学习了单向链表&#xff0c;而单向链表虽然空间利用率高&#xff0c;插入和删除也只需改变指针就可以达到&#xff01;但是我们在每次查找、删除、访问..…

pip3命令全解析:Python3包管理工具的详细使用指南

pip3命令全解析:Python3包管理工具的详细使用指南 一、基本使用二、升级和更新三、其他常用命令四、换源操作五、注意事项六、帮助信息pip3命令使用说明 pip3 是 Python 3 的包管理工具,用于安装、升级和卸载 Python 3 的包。以下是 pip3 的常用命令及详细说明: 一、基本使…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号&#xff0c;Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析&#xff0c;集成Deepseek R1大模型&#xff0c;通过AI技术的深度融合&#xff0c;致力于打造"会思考的BI系统"&#xff0c;让数据价值触手可及&#xff0c;助力企业实现从数据洞察到决策执…

使用PyCharm创建项目以及如何注释代码

创建好项目后会出现如下图所示的画面&#xff0c;我们可以通过在项目文件夹上点击鼠标右键&#xff0c;选择“New”菜单下的“Python File”来创建一个 Python 文件&#xff0c;在给文件命名时建议使用英文字母和下划线的组合&#xff0c;创建好的 Python 文件会自动打开&#…

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中&#xff0c;我们是直接利用GPIO子系统控制了LED2的亮和灭&#xff0c;这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…