初识 STM32
2007 年 6 月,ST 在北京发布了全球第一款基于 ARM Cortex M3 内核的 32 位通用微控制
器芯片:STM32F103,以优异的性能,丰富的资源,超高的性价比,迅速占领市场,从此一鸣
惊人,一发不可收拾,截止到 2020 年 6 月,STM32 累计出货量超过 45 亿颗。
战舰开发板使用的 STM32F103ZET6 芯片如图 2.1.1 所示:
STM32 的优异性体现在如下几个方面:
1,超低的价格。8 位机的价格,32 位机的性能,是 STM32 最大的优势。
2,超多的外设。STM32 拥有包括:FMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、
ADC、DAC、RTC、DMA 等众多外设及功能,具有极高的集成度。
3,丰富的型号。STM32 仅 M3 内核就拥有 F100、F101、F102、F103、F105、F107、F207、
F217 等 8 个系列上百种型号,具有 QFN、LQFP、BGA 等封装可供选择。同时 STM32 还推出
了 STM32L 和 STM32W 等超低功耗和无线应用型的 M3 芯片,另外,ST 还推出了
STM32F4/F7/H7 等更高性能的芯片。
4,优异的实时性能。150 个中断,16 级可编程优先级,并且所有引脚都可以作中断输入。
5,杰出的功耗控制。STM32 各个外设都有自己的独立时钟开关,可以通过关闭相应外设
的时钟来降低功耗。
6,极低的开发成本。通过串口即可下载程序,而且相应的仿真器也很便宜,支持
JTAG&SWD 调试接口,最少仅 2 个 IO 口即可实现仿真调试,极大的降低了开发成本。
STM32 与 51 的性能对比:
STM32 系列
STM32 目前总共有 5 大类,18 个系列
可以看到,STM32 主要分两大块,MCU 和 MPU,MCU 就是我们常见的 STM32 微控制
器,不能跑 Linux,而MPU 则是 ST 在 19 年才推出的微处理器,可以跑 Linux。
STM32 命名
STM32 的命名规则
STM32 的产品名字里面包含了:家族、类别、特定功能、引脚数、闪存容量、
封装、温度范围等重要信息,这些信息可以帮助我们识别和区分 STM32 不同芯片。
STM32 选型
这里我们只要遵循:由高到低,由大到小 的原则
由高到低
由高到低原则:在不能评估项目所需性能的时候,可以考虑先选择高性能的 STM32 型号进
行开发,比如选择 F4/F7/H7 等,在高性能 STM32 上面完成关键性能(即最需要性能的代码)
开发验证,如果满足使用要求,则可以降档,如从 H7→F7→F4→F1,如不满足要求,则可以升
档,如从 F4→F7→H7,通过此方法找到最佳性价比的 STM32 系列。
由大到小
由大到小原则:在不能评估项目所需 FLASH 大小、SRAM 大小、GPIO 数量、定时器等资
源需求的时候,可以考虑先选择容量较大的型号进行开发,比如选择 512K/甚至 1M FLASH 的
型号进行开发,等到开发完成大部分功能之后,就对项目所需资源有了定论,从而可以根据实
际情况进行降档选择(当然极少数情况可能还需要升档),通过此方法,找到最合适的 STM32
型号。
整个选型工作大家可以在正点原子开发板上进行验证,一般我们开发板都是选择容量比较
大/资源比较多的型号进行设计的,这样可以免去大家自己设计焊接验证板的麻烦,加快项目开
发进度。一些资深工程师,对项目要求认识比较深入的话,甚至都不需要验证了,直接就可以
选出最合适的型号,这个效率更高。当然这个需要长期积累和多实践,相信只要大家多学习,
多实践,总有一天也能达到这个级别。
STM32 设计
任何 MCU 部分的原理图设计,其实都遵循:最小系统 + IO 分配 的设计原则。
STM32F407 资源简介
数据手册
在官网就可以下载:https://www.stmcu.org.cn/
STM32F407ZGT6.pdf 数据手册是针对 STM32F407 系列的数据手册,主要包括 8 个章节。
整个 STM32F407 数据手册,对我们开发以及学习 STM32 来说都比较重要,因此建议大家
可以简单的通读一遍这个文档,以加深印象。对于原理图设计,最重要的莫过于引脚定义这一
章节了,只有知道了 STM32 的引脚定义,才能开始设计原理图。
STM32F407ZGT6 具体的内部资源:
STM32F407ZGT6 引脚分布:
STM32F407ZGT6 引脚定义:
引脚定义表的具体说明
最小系统
最小系统就是保证 MCU 正常运行的最低要求,一般是指 MCU 的供电、复位、晶振、BOOT
等部分。STM32F407 的最小系统需求如表 2.3.4.4 所示:
完成以上引脚的设计以后,STM32F407 的最小系统就完成了,关于这些引脚的实际原理图,
大家可以参考我们探索者开发板的原理图。接下来就可以开始进行 IO 分配了。
IO 分配
IO 分配就是在完成最小系统设计以后,根据项目需要对 MCU 的 IO 口进行分配,连接不
同的器件,从而实现整体功能。比如:GPIO、IIC、SPI、SDIO、FSMC、USB、中断等。遵循:
先分配特定外设 IO,再分配通用 IO,最后微调的原则,见表 2.3.4.5 所示:
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2200985.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
初识 STM32和STM32F407简介
初识 STM32
2007 年 6 月,ST 在北京发布了全球第一款基于 ARM Cortex M3 内核的 32 位通用微控制 器芯片:STM32F103,以优异的性能,丰富的资源,超高的性价比,迅速占领市场,从此一鸣 惊人&#x……
多线程(七)线程池
线程池,又是一个池,我们已经见识过很多池了:
数据库连接池、字符串常量池….
那我们这个线程池又是个啥呢?
我们提前将线程准备好,需要用的时候直接取,不需要用的时候,在直接还回去。
这样……
spark 读取 tar.gz 文件
一、准备工作 (Window 中使用 7-zip 生成)
一个json文件 压缩 成 tar.gz t.json
[{"a": 1, "data": {"b": 1, "c": 2}}]生成 tar 包 将 tar 包 在压缩为 gz
二、使用Spark 读取 tar.gz
2.1、使用 spark.r……
Leetcode:144.二叉树的前序遍历,94.二叉树的中序遍历,145.二叉树的后序遍历(非递归实现)
文章目录Leetcode:144.二叉树的前序遍历题目描述示例思路分析(总)代码实现Leetcode:94.二叉树的中序遍历思路分析代码实现Leetcode:145.二叉树的后序遍历思路分析代码实现Leetcode:144.二叉树的前序遍历
题目描述
给你二叉树的根节点 root ,返回它节点值的 前序 遍……
2023 – 04 – 03 2016天梯赛初赛(L2)练习
7-12 关于堆的判断
分数 25 全屏浏览题目 切换布局
作者 陈越
单位 浙江大学
将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:
x is the root:x是根结点;x and y are siblings&……
【Vue】Vue2-Vue3响应式原理
什么是响应式?
我们先来看一下响应式意味着什么?💁♀️ 我们来看一段代码:⬇️
m有一个初始化的值,有一段代码使用了这个值;那么在m有一个新的值时,这段代码可以自动重新执行;
let m 20;
console.log(m);
console.log(m*2)……
操作系统笔记–非连续内存分配的分段、分页和页表
目录
1–非连续内存分配
2–分段
3–分页
4–页表 1–非连续内存分配 在连续内存分配中,一个程序的内存空间是连续的,其内存利用率较低,且容易形成内碎片和外碎片的问题; 在非连续内存分配中,一个程序的内存空间是……
C++ sort函数的所有用法(排序函数,使用lambda与自定义比较函数的各自的优缺点)
sort函数 C中的sort()函数是一种通用排序算法,它提供了对序列中的元素进行排序的功能。sort()函数是C标准库algorithm头文件中的一个函数。 sort函数的基本用法 sort()函数的函数原型如下: sort(iterator first, iterator last);first和last是随机访问迭……
(C语言)文件操作—–详解
目录
1. 为什么使用文件
2. 什么是文件
程序文件
数据文件
文件名
3. 文件的打开和关闭
文件指针 文件的打开和关闭
🙉🙉打开文件(fopen函数)
🙈🙈关闭文件(fclose函数)……
LeetCode练习九:树(上)——树的定义及遍历、二叉搜索树
文章目录一、 树1.1 树的定义1.2 二叉树1.2.1 完全二叉树1.2.1 满二叉树1.2.3 二叉堆1.2.4 二叉搜索树1.2.5 平衡二叉搜索树1.3 二叉树的实现1.3.1 嵌套列表法(顺序存储)1.3.2 节点链接法(链式存储)1.4 树的应用:表达式……
【hello Linux】环境变量
目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……
【Linux基础】常用命令整理
ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……
客快物流大数据项目(一百一十二):初识Spring Cloud
文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…
C和C++中的struct有什么区别
区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的,……
docker的数据卷详解
数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……
13、Qt生成dll-QLibrary方式使用
Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirsÿ……
基于mapreduce 的 minHash 矩阵压缩
Minhash作用: 对大矩阵进行降维处理,在进行计算俩个用户之间的相似度。
比如: 俩个用户手机下载的APP的相似度,在一个矩阵中会有很多很多的用户要比较没俩个用户之间的相似度是一个很大的计算任务 如果首先对这个矩阵降维处理&am……
关于hashmap使用迭代器的问题
keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。 package com.test2.test;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;public class mapiterator……
Hadoop入口FileSystem HDFS操作 本地文件合并到HDFS和HDFS文件合并
Hadoop 文件API的起点是FileSystem类。这是一个与文件系统交互的抽象类。存在不同的具体实现子类来处理HDFS和本地文件系统。
HDFS接口的FileSystem对象:
Configuration conf new Configuration();
FileSystem hdfs FileSystem.get(conf); HDFS直接操作&#x……
combiner partitioner
combine是在map端进行的,是在patition之后 partitioner也是在map端进行的 combine 适用在每个map端进行简单的合并,同样也是继承Reduce类。…
编程日记2023/4/16 14:50:35