单片机第三季-第三课:STM32开发板原理图、配置、浮点运算单元

目录

1,开发板原理图

2,浮点运算单元(FPU) 


1,开发板原理图

课程视频比较早,介绍了三款开发板。观看视频时用的开发板说和51单片机共板的STM32核心板,将51单片机从底座拆下来后,安装上STM32核心板。

ISP原理回顾:
第1步:先设置BOOT1和BOOT0从系统区启动,执行系统中预设的程序;
第2步:主机通过串口发送要下载的hex文件给STM32;
第3步:系统预设的程序接收到hex后将其烧录到用户区flash中;
第4步:设置BOOT1和BOOT0为从用户区启动,然后复位重启执行刚才下载的hex即可。

如何设置BOOT1和BOOT0使STM32从系统区或者用户区启动,见下图:

核心板的自动下载电路:

核心板通过USB连接电脑后,下载程序的上位机可以通过RTS和DTR分别控制BOOT0和NRST引脚;

自动下载即上位机下载软件通过控制RTS和DTR引脚,间接控制BOOT0和NRST,完成下载程序和复位启动。

复位电路:

复位电路可以实现上电复位和RSTK复位按键复位。 

2,浮点运算单元(FPU) 

浮点运算即存在float或double类型数据的加、减、乘、除运算;

浮点计算的2种实现方法:软浮点、硬浮点;

编译环境支持浮点库,可以将用C语言写的浮点数运算转成整形运算,对于单片机来说根本不知道float、double这回事,所以单片机不需要有专门的浮点运算单元就可以算浮点数了,但通过编译将浮点运算转化为整形运算时会增加代码量。

STM32F4系列支持硬浮点计算,因为其内部有相应的硬件电路,可以直接输入浮点数进行计算,但其有两个例外:

1、F4内部FPU只能算float不能算double;
2、F4内部FPU只能算float的简单加减乘除,不能算float的sin、cos等复杂运算;

我们编程时不需要考虑CPU的软浮点或者硬浮点特性,直接用C编程实现功能,然后设置好后直接编译,按照这样的规则帮我编译:我的浮点运算可以用硬浮点时用FPU(在编译环境中,如KEIL中有相应的选项可以设置,Single Precision即指只支持float类型运算,有的显示为FPU),如果不能用硬浮点就自动用软浮点来实现。

需要注意的是,只有选择具备FPU的MCU时(例如STM32F4系列),才会出现Floating Point Hardware选项。 

对于不支持FPU的MCU(例如STM32F1系列),存在float类型运算时,在编译时会将float运算转换为整型运算,因此生成的HEX文件会比支持FPU时的HEX文件要大。

项目中用到大量double浮点时或者大量sin cos时,F4的FPU是无效的,这时建议用F1+DSP。

参考《Cortex M3与M4权威指南.pdf》。

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

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

相关文章

【从0学习Solidity】35. 荷兰拍卖

【从0学习Solidity】35. 荷兰拍卖 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈…

黑马JVM总结(十四)

(1)分代回收_1 Java虚拟机都是结合前面几种算法,让他们协同工作,具体实现是虚拟机里面一个叫做分代的垃圾回收机制,把我们堆内存大的区域划分为两块新生代、老年代 新生代有划分为伊甸园、幸存区Form、幸存区To 为什…

ARMv8 cache的包含策略inclusive 和 exclusive之间的区别以及Cortex-A55示例详解

Inclusive 和 Exclusive 一, 什么是cache的inclusive 和 exclusive二,Inclusive 和 Exclusive cache示例2.1 Inclusive cache2.2 Exclusive cache 三, inclusive cache和 exclusive cache的比较3.1 cache coherency3.2 miss rate3.3 cache ca…

使用 Docker 安装 Elasticsearch (本地环境 M1 Mac)

Elasticsearchkibana下载安装 docker pull elasticsearch:7.16.2docker run --name es -d -e ES_JAVA_OPTS“-Xms512m -Xmx512m” -e “discovery.typesingle-node” -p 9200:9200 -p 9300:9300 elasticsearch:7.16.2docker pull kibana:7.16.2docker run --name kibana -e EL…

最频繁被问到的SQL面试题

面试感叹失败的原因可能有很多,而做成的道路只有⼀条,那就是不断积累。纯手工的8291字的SQL面试题总结分享给初学者,俗称八股文,期待对新手有所帮助。 窗口函数题 窗口函数其实就是根据当前数据, 计算其在所在的组中的统计数据。…

网工基础知识——以太网

1972年Bob Metcalfe“以太网之父”被Xerox雇佣为网络专家,Bob Metcalfe 来到Xerox公司的Palo Alto研究中心(PARC)的第一个任务是把Palo Alto的计算机连接到ARPANET(Internet的前身)上。1972年底Bob Metcalfe以ALOHA系统…

嵌入式开发笔记:STM32的外设GPIO知识学习

GPIO简介: • GPIO ( General Purpose Input Output )通用输入输出口 • 可配置为 8 种输入输出模式 • 引脚电平: 0V~3.3V ,部分引脚可容忍 5V (如舵机和驱动直流电机) • 输出模式下可控制端口…

机器学习 day35(决策树)

决策树 上图的数据集是一个特征值X采用分类值,即只取几个离散值,同时也是一个二元分类任务,即标签Y只有两个值 上图为之前数据集对应的决策树,最顶层的节点称为根节点,椭圆形节点称为决策节点,矩形节点称…

springboot整合返回数据统一封装

1、MagCode,错误码枚举类 package com.mgx.common.enums;import lombok.*; import lombok.extern.slf4j.Slf4j;/*** 错误码* author mgx*/ Slf4j NoArgsConstructor AllArgsConstructor public enum MsgCode {/*** 枚举标识,根据业务类型进行添加*/Code…

阻塞队列-生产者消费者模型

阻塞队列介绍标准库阻塞队列使用基于阻塞队列的简单生产者消费者模型。实现一个简单型阻塞队列 (基于数组实现) 阻塞队列介绍 不要和之前学多线程的就绪队列搞混; 阻塞队列:也是一个队列,先进先出。带有特殊的功能 &…

Learn Prompt-提供示例

目前我们与 ChatGPT 交流的主要形式是文字。提示除了指令问题的形式外,还可以包含例子。特别是当我们需要具体的输出时,提供例子可以省去我们对具体任务的解释,帮助ChatGPT更好地理解我们的确切需求,从而提供更准确,更…

【数据结构】哈希应用——位图、布隆过滤器

文章目录 一、位图1.基本概念2.基本实现3.基本应用3.1 找100亿个整数只出现一次的数3.2 两个文件分别有100亿整数,1G内存,求交集 二、布隆过滤器1、基本实现2、基本应用2.1过滤一部分的数据2.2 两个文件,分别100亿个查询,1G内存&a…

[Linux入门]---管理者操作系统

文章目录 1.操作系统概念2.设计操作系统的目的3.操作系统如何进行管理系统调用和库函数概念 1.操作系统概念 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括: 内核(进程管理,内存…

C# OpenCvSharp Yolov8 Detect 目标检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Open…

索引(含B树、B+树)

1、索引(index) 索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。 一张表的一个字段可以添加一个索引,当然,多个字段联合起来也可以添加索引。 索引相当于一本书的目录,是为了缩小扫描…

Avl树(有详细图解)

目录 介绍 引入 概念 特点 模拟实现 思路 插入 旋转 左旋 无子树 有子树 右旋 无子树 有子树 左右旋 引入(也就是有子树版本的抽象图解) 解决方法(也就是左右旋) 总结 无子树(也就是curright的位置就是newnode) 有子树 模型高度解释 旋转 更新三个…

深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略

文章目录 1 多层感知机(全连接神经网络)1.1 表示1.2 基本概念1.3 必要组成—激活函数1.4 网络结构设计 2 损失函数2.1 SOFTMAX操作2.2 交叉熵损失函数 3 优化3.1 求导计算过于复杂?3.2 链式法则导致的问题?3.3 梯度下降算法的改进…

八大排序(二)快速排序

一、快速排序的思想 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右…

免费的AI写作软件-智能AI写作工具

我们要谈的话题是AI写作,尤其是免费AI写作,以及147SEOAI写作免费工具。您是否曾经为了创作文章而感到煞费苦心?是否一直在寻找一种能够轻松生成高质量文章的方法? 147GPT批量文章生成工具​www.147seo.com/post/2801.html​编辑ht…

Flink TaskManger 内存计算实战

Flink TaskManager内存计算图 计算实例 案例一、假设Task Process内存4GB。 taskmanager.memory.process.size4096m 先排减JVM内存。 JVM Metaspace 固定内存 256mJVM Overhead 固定比例 process * 0.1 4096 * 0.1 410m 得到 Total Flink Memory 4096-256-410 3430m 计…