STM32系列 (一)开发环境的搭建

2023-11-02

STM32简介

        STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多32位单片机中脱颖而出

        STM32芯片内部可以粗略划分两部分:内核+片上外设。如果与电脑类比,内核与片上外设就如同电脑的CPU与主板、内存、显卡、硬盘的关系。
ARM公司只设计内核不生产芯片,他会将有关内核的技术授权给各半导体厂商例如ST、TI、Atme1、NXP等厂商。这些厂商都是基于这个内核自己设计片上外设如SRAM、ROM、FLASH、USART、GPIO等,然后集成到一个硅片上,这就是我们现在用的芯片。
芯片内部架构见图:
        

        芯片内部内核和外设分别是两个公司设计的,那他们该怎么联系到一起协同高效的工作呢?答案就是总线,学过计算机组成原理的同学都应该知道计算机五大组成部分运算器、控制器、存储器、输入设备、输出设备他们之间的通信就是通过总线。我们上面也说了单片机就是一个集成在硅片上的计算机,所以他内部的连接关系也是靠总线。
STM32内部一共有11条总线:

        我们知道,在嵌入式开发中,比如51和Arduino,我们写程序烧入芯片就可以实现控制。那么我们写的程序怎么就能控制我们的单片机工作呢或者程序在控制什么东西呢?
那个东西就是寄存器,其实不管我们用库开发还是寄存器开发我们本质上就是在控制寄存器上的每个位的通断,并且这些寄存器都有其特定的功能。换句话说每个外设(如GPI0、USART、I2C、SPI.…)都对应有寄存器来对他控制。

所以STM32可以用寄存器开发也可以用库开发。
 

 

STM的选型

STM32是ST的所有产品的统称,ST有两大家族STM8和STM32。STM8主要针对于低成本,对主频要求比较低、运算速度要求不是很高的低端市场。STM32主要应用于项目对主频要求较高、运算速度比较快、实时性好的中高端市场。STM32有很多产品大致划分可分为主流MCU、高性能MCU、低功耗MCU。其中主流MCU如STM32F1系列、高性能MCU如STM32F4、STM32F7系列、低功耗MCU如STM32L0系列。并且每个系列产品下面还会根据闪存容量、外设数量、封装大小分为很多种类并且价格也是差别很大。

STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:

 

我手上的是正点原子的一款开发板,芯片用的是STM32F103ZET6

 芯片说明书如下:

 

 

 

编写程序

先下载keil软件(官网下载MDK5的安装包):

注意:

 

MDK5安装

MDK5的安装比较简单。首先从官网上下载MDK5的安装包,下载前需要先填写相关个人信息:

然后双击下载后的安装包,开始安装:

 

 

 勾选同意选择框,点击下一步:

 

选择安装路径,这包括选择MDK核心组件(Core)的安装路径和外设包(Pack)的安装路径,一般只用选择 Core 的安装路径,Pack 的路径会自动设置为 Core 路径下的ARM/PACK

 

点击下一步,等待进度条走完即可:

 

安装完成后,会自动弹出 Pack Installer 界面,如果没有的话可以打开安装好的 Keil uVision5 软件,在工具栏上找到 Pack Installer 的图标,然后点击进入:

 

 打开 Pack Installer 界面后如下图所示:

 由于我们使用的STM32型号为 STM32F103TBU6,还需要安装开发所需要的器件支持包(Device Family Pack, i.e. DFP),所以展开STM系列产品的菜单栏:

 

 点击右边红色圆圈选中的三个组件,Pack Installer 会自动从网上下载最新版本的组件,下载进度在 Pack Installer 底部状态栏显示:

 

        这时候我们的MDK5就下载好了,接下来我们要下载STM32CubeMX,其实用MDK5已经可以来编写STM32的代码了,倒是接下来我们的教程将会使用STM32CubeMX进行解析,因为在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等  省去了我们配置各种外设的时间,大大的节省了时间。

安装CubeMx一共需要三步

  •  JRE (Java Runtime Environment)  Java运行环境 运行JAVA程序所必须的环境的集合
  •  STM32CubeMX
  • HAL库   STM32 HAL固件库   ST官方推出的另一套库。

1安装JRE

由于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用,   记得选择64位的安装

官网:  https://www.java.com/en/download/manual.jsp

BD云: https://pan.baidu.com/s/1rI_XrM2SAw-6Jbvj75SWpg?pwd=hwk7 提取: hwk7 

新lian接:

BD云: https://pan.baidu.com/s/1rj56i9HS4UAaE9yEaiIsaA?pwd=ack6 提取: ack6 

1点击安装

2 修改路径 点下一步

3 等待安装完成,关闭界面

2安装STM32CubeMX

 官网:www.st.com/stm32cubemx

官网下载:

在官网下载需要注册下ST官网账号,目前最新为5.3.0版本。

1打开安装包 

 

 2同意协议,下一步

 3 勾选第一个即可,第二个选项是是否同意ST公司收集你的个人使用信息等。

 

4 点YES  这句话是安装本软件可能会与文件夹之前文件冲突,导致文件夹之前文件丢失 是否继续 

点继续即可

 5 直接点NEXT,其他不用设置 之后开始安装

 6 安装完成,点Done退出

 

3安装HAL库

什么是HAL固件库?

STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。

和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。

并且从16年开始,ST公司就逐渐停止了对标准固件库的更新,转而倾向于HAL固件库和 Low-layer底层库的更新,停止标准库更新,也就表示了以后使用STM32CubeMX配置HAL/LL库是主流配置环境;

HAL库,有在线安装、离线安装两种方式。

在线安装

打开安装好的 STM32CubeMX 软件  点上面的Help -> Manage embedded software packages 

 会跳出来一个选择型号界面   勾选上你要安装的HAL库, 点击“Install Now” 直到安装成功。 如下图:

 到此,你的STM32 CubeMx安装成功了。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32系列 (一)开发环境的搭建 的相关文章

  • 对一个文件夹下的图片进行批量缩放(resize)处理

    文章目录 问题背景 环境配置 完整代码 代码解释 另一种更简单的写法 问题背景 使用GPU训练时 有时出现了图片太大 导致处理起来速度慢或内存不够崩掉的情况 因此需要对原图片进行缩放 本文介绍了批量处理的方法 成功将一个文件下的所有图片 较
  • this.$router.go(0)的作用

    this router go val gt 在history记录中前进或者后退val步 当val为0时刷新当前页面
  • 使用mathjax解析公式

    mathjax解析公式 uniapp使用mathjax 在app vue里面动态引入mathjax const script document createElement script MathJax地址 config参数不可忽略 scri

随机推荐

  • Raft 一致性算法论文译文

    本篇博客为著名的 RAFT 一致性算法论文的中文翻译 论文名为 In search of an Understandable Consensus Algorithm Extended Version 寻找一种易于理解的一致性算法 Raft
  • 《Windows核心编程》---堆管理函数

    Windows的 堆 分为默认堆和私有堆两种 默认堆是在程序初始化时由操作系统自动创建的 所有标准内存管理函数都是在默认堆中申请内存的 而私有堆相当于在默认堆中保留了一大块内存 用堆管理函数可以在这个保留的内存区域中分配内存 一个进程的默认
  • LabVIEW 可配置正交频分复用软件定义无线电收发器

    OFDM 正交频分复用 是使用大量具有谐波频率间隔的调制载波并行传输数据的技术 从而使载波彼此正交 正交性允许以后可以分离的通道的频谱重叠 很像正交调制 SDR 软件定义无线电 是指一种无线电通信系统 可以配置为通过可编程硬件平台在大频谱范
  • 最新ChatGPT GPT-4 自然语言理解NLU与句词分类技术详解(附ipynb与python源码及视频讲解)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(四)

    目录 前言 最新ChatGPT GPT 4 自然语言理解NLU与句词分类技术详解 1 NLU基础 1 1 句子级别的分类 1 2 Token级别的分类 2 相关API 2 1 LMAS GPT API 2 2 ChatGPT Style 相
  • Linux中的计时函数

    2023年7月22日 周六上午 目录 预备知识 Linux系统函数sysconf 函数原型 参数介绍 使用方法 数据类型clock t times 函数原型 tms结构体 使用方法 clock 函数原型 使用方法 预备知识 Linux系统函
  • CRM之B/S和C/S架构的区别(下)

    B S 模式的缺点 1 响应速度不及C S 随着AJAX技术的发展 相比传统B S结构软件提升一倍速度 2 用户体验效果不是很理想 B S需要单独界面设计 厂商之间的界面也是千差万别 由于浏览器刷新机制 使用时有刷屏现象 好在AJAX技术解
  • 第二章:预备知识整理——2.2数据预处理

    数据预处理的课后习题为 2 2 5 练习 创建包含更多行和列的原始数据集 删除缺失值最多的列 将预处理后的数据集转换为张量格式 1 该问题的解决 感谢https blog csdn net qq 42363032 article detai
  • RabbitMQ 高级特性

    RabbitMQ 高级特性 生产者确认 confirm return confirm确认模式 return 退回模式 消费者确认 ACK 消费端限流 TTL过期时间 死信队列 延迟队列 保证幂等性 生产者代码实现 消费者代码实现 在使用 R
  • ANDROID项目重构之路:架构篇

    原创文章 转载请注明 转载自Keegan小钢 写于2015 06 05 去年10月底换到了新公司 做移动研发组的负责人 刚开始接手android项目时 发现该项目真的是一团糟 首先是其架构 是按功能模块进行划分的 本来按模块划分也挺好的 可
  • <cwchar> (wchar.h)

    英文原文地址 https cplusplus com reference cwchar 我会持续更新 我的翻译如下
  • 1. 开源协议

    开源 Open Source 一词 最早由Christine Peterson女士在1998年提出 它消除了人们对自由软件 Free Software 的理解歧义 软件的分类 商业软件 收费 元代码不公开 共享软件 免费使用 源代码不公开
  • 第三章 系统分析

    第三章 系统分析 本章将对微信小程序及签到应用市场进行需求分析 首先对系统进行功能需求分析 分析确定受众群 分析系统所要实现的功能 然后对系统进行数据需求分析 为了更好地完成系统项目 为项目的进一步开发工作做准备 了解具体数据 有利于软件的
  • Git 开发分支代码上线流程

    开发分支代码上线流程 开发分支 1 切换到master上 pull最新代码 git checkout mater git pull 2 打开发分支 git branch feature 自己taped的任务号 例如 git branch f
  • Linux中 的 " "(双引号) ' ' (单引号) ` `(反引号)

    1 基础篇 单引号 所见即所得 回将里面的内容原封不动的展示出来 双引号 和单引号类似 但里面的特殊符号会被解析 比如 反引号 都是特殊符号 反引号 反引号内的内容将优先执行 优先执行里面的命令 并将结果保留下来 无引号 和双引号类似 但此
  • sql server 查询某个字段是否有值 返回bool类型

    sql server 查询某个字段是否有值 返回bool类型 true 或 false SELECT ColumnCode CONVERT BIT CASE WHEN LEN ColumnCode gt 0 THEN 1 ELSE 0 EN
  • aop默认代理方式是什么

    jdk代理 可以通过proxy target class修改 proxy target class属性值决定是基于接口的还是基于类的代理被创建 如果proxy target class 属性值被设置为true 那么基于类的代理将起作用 这时
  • windTerm—Xshell、SercureCRT等替代品

    最常用的ssh工具 莫过于SercureCRT Xshell 但是这两个都收费 某些场景下不好使用 免费的有putty 但是这个太简陋了 用起来不舒服 finalShell eclecterm tabby 这三个很炫酷 但安装包和占用内存都
  • knn算法,利用numpy简单实现

    首先明确概念 回归 预测体重 预测房价 预测损失 结果是不容易确定的 分类 预测男女 预测是否能通过考试 结果是容易确定的 我的理解 回归针对连续的数据 分类针对离散的数据 回归连续 分类离散 classfication和regressio
  • 在vscode上快速打开php文件(小白手把手教小白,超级详细)

    第一次写博客 如有不足 欢迎指正 在vscode中打开php文件如下 准备工作 先下载小皮面板 记住下载路径 在其中打开Apache和MySQL 然后我们步入正题 1 首先打开vscode 在其中打开小皮面板所在文件夹 在WWW文件里随便建
  • STM32系列 (一)开发环境的搭建

    STM32简介 STM32是意法半导体 ST 推出一款32位的单片机 STM32具有超低的价格 超多的外设 丰富的型号 优异的实时性 极低的开发成本等优势 STM32凭借其产品线的多样化 极高的性价比 简单易用的库开发方式 迅速在众多32位