嵌入式学习笔记——STM32单片机开发前的准备
STM32单片机开发前的准备
- 1.集成开发环境的选取
- STM32 CubeIDE
- KEIL_MDK
- 2.KEIL_MDK环境搭建
- 安装包获取及安装
- 芯片包下载及安装
- 工程建立(STM32F407VET6为例)
- 1.新建工程文件夹
- 2.新建工程
- 3.安装ST-LINK以及CH340的驱动
- 4.设置KEIL,并烧录
- 本文重点
1.集成开发环境的选取
前面两篇主要是围绕单片机做了一些概述,本开始,正式进入STM32的开发准备。首先是开发环境的选取,得益于发展时间比较长,单片机的开发环境已经变得集成化程度愈来愈高了,针对STM32有着多款IDE(集成开发环境)可以选择,例如常见的KEIL MDK、IAR、VScode、STM32 CubeIDE。
注:IDE(集成开发环境,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。——来自百度百科对于IDE的解释。
STM32 CubeIDE
当然ST公司也有自己的开发环境STM32 CubeIDE,配合其图形化编程软件STM32CubeMX可以很大程度上节约用户编写片内外设底层代码的时间以及调试成本,配合其HAL库也有着不错的开发体验,本系列暂时选用KEIL MDK配合寄存器开发,后面有时间笔者再安排使用ST公司自家开发全家桶进行介绍。想要了解的也可以去其官网查看https://www.st.com/zh/development-tools/stm32-software-development-tools.html

KEIL_MDK
进入KEIL官网点击产品,选择Arm Cortex-M然后就可以看见MDK的界面了。

我们可以看见MDK集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务,是一个STM32开发常用的IDE。

2.KEIL_MDK环境搭建
KEIL有专门针对学生和个人开发者的免费社区版,直接在这点击下载即可,推荐大家下载5.35以前的版本,新版的编译器什么的都更新了会造成例程都无法编译通过的尴尬局面,还得自己手动切换编译器。

安装包获取及安装
关于KEIL的获取和安装,网上资料很多这里给大家贴个链接,
Keil5MDK(MDK-Community edition)社区版安装教程http://t.csdn.cn/Xw2gd
如果看完还有错误,或者想要详细安装文档以及5.25版本安装包的可以私信,笔者发给你。
芯片包下载及安装
MDK安装好后,其默认是没有STM32的芯片包的,需要我们自己下载并添加,这里记录手动下载及安装的方式:
首先,进入KEIL的官网,找到芯片包的下载地址:


在新界面点击software Pscks
或者直接点击下方链接进去选择对应型号的芯片包下载并安装。
https://www.keil.com/dd2/pack/

查找到自己需要的芯片信号,然后点击下载,选择接受,然后等待下载完毕。由于是外网,下载可能很慢,或者说下载不了的,直接点击这个链接进去网盘下载——
链接:https://pan.baidu.com/s/1q9zMc6tJE7gD8M2EzwfedA?pwd=x9q8
提取码:x9q8

关于安装,直接双击,然后一路next就可以了,如果双击没反应,也可以参考这种添加PACK的方式——
keil5(MDK)导入pack包http://t.csdn.cn/gQ6vL。
工程建立(STM32F407VET6为例)
1.新建工程文件夹
首先为了后期方便管理自己的代码,建议是单独新建一个专门存放程序的文件夹,每次新建工程都在这个大文件(如下图的工程代码)内再新建一个小的文件夹(LED+KEY),小文件开始,往后面尽量不要使用中文命名。

而后在小文件内再新建三个文件夹,分别是:
1.CMSIS——用来存放系统启动文件以及官方时钟配置文件
2.PROJECT——用来存放KEIL生成的工程文件以及工程输出的相关文档。
3.USER——用来存放个人文件,类似main.c、以及其他用户源文件以及头文件等等。

2.新建工程
这里给贴一个大佬总结的步骤很详细,看完如果还有不行的,可以把问题留在评论区,或者私信笔者。
STM32新建工程http://t.csdn.cn/M0DSk
新建完成后编译0errors就说明工程没问题了。

3.安装ST-LINK以及CH340的驱动
这两个也都是直接双击,一直下一步就行了安装成功后在计算机管理里面即可查看到这两个。


4.设置KEIL,并烧录
按照以下步骤选择ST-LINK下载器并点击setting.

在红框位置可以看见0xxxxxxx的内核号即可。
如果没有内核号,有可能是连接出了问题,需要检查接线。内核号查询没问题后,点击确定。

然后就可以开始烧录了,点击一号框的LOAD,等待2位置出现100%标明烧录完毕。

至此,整个开发环境就已经全部跑通了。接下来就可以开始编程了。
本文重点
STM32工程的创建,工程格式。环境搭建以及烧录,由于整个过程实在是太多篇幅了,中间有些步骤省略了,如果有需要更详细介绍的可以私信笔者。
相关文章:
嵌入式学习笔记——STM32单片机开发前的准备
STM32单片机开发前的准备1.集成开发环境的选取STM32 CubeIDEKEIL_MDK2.KEIL_MDK环境搭建安装包获取及安装芯片包下载及安装工程建立(STM32F407VET6为例)1.新建工程文件夹2.新建工程3.安装ST-LINK以及CH340的驱动4.设置KEIL,并烧录本文重点1.集成开发环境的选取 前面…...
客户案例|FPGA研发管理解决方案:UniPro瀑布+敏捷 打造高效能组织
2023开年以来,新享科技项目管理软件UniPro收获一波客户侧的点赞好评。在过去一年中,UniPro不断与客户保持高频沟通,满足客户需求为出发点,以产品功能实现为落脚点,不断打磨产品。 以UniPro客户京微齐力为例࿰…...
【信息学奥赛】1400:统计单词数
统计单词数也需要分割单词,如果使用字符数组来做的话,其实和1144:单词翻转类似,但是我一直只能通过四个样例,估计边界处理条件还是有点问题。 不过经过打印字符串长度之后发现了之前遇到的一个问题,即fget…...
# 技术详解: 利用CI同步文章以及多端发布
技术详解: 利用CI同步文章以及多端发布 技术详解: 利用CI同步文章以及多端发布 前言文章的同步实现的细节 思路文章元数据的定义和提取修改文章的优化本地图片资源上传CDN并替换本地link 终于到了 CI 的部分了最后来一些碎碎念 前言 前几天我更新了一篇简单技术总结之后&am…...
分形维数的计算方法汇总
以下是常用的时间序列分形维数计算方法及相应的参考文献:Hurst指数法Hurst指数法是最早用于计算分形维数的方法之一,其基本思想是通过计算时间序列的长程相关性来反映其分形特性。具体步骤是:(1) 对原始时间序列进行标准化处理。(2) 将序列分…...
微积分小课堂:积分(从微观趋势了解宏观变化)
文章目录 引言I. 预备知识: 积分效应1.1 闯黄灯1.2 公司利润(飞轮效应)1.3 飞轮效应II 积分2.1 积分的计算2.2 积分思想的本质引言 微分解决的问题是从宏观变化了解微观趋势;积分和微分刚好相反,是从微观去看宏观变化。 通过积分效应,提升我们的认识水平,同时能用一些工…...
4道数学题,求解极狐GitLab CI 流水线|第4题:合并列车
本文来自: 武让 极狐GitLab 高级解决方案架构师 💡 极狐GitLab CI 依靠其一体化、轻量化、声明式、开箱即用的特性,在开发者群体中的使用率越来越高,在国内企业中仅次于 Jenkins ,排在第二位。 极狐GitLab 流水线有 4…...
代码规范简述
目录 命名规范 代码格式 OOP规约 集合规范 并发规范 SQL语句规范 SQL 建表规范 SQL 索引规范 SQL 查询规范 控制语句规范 Javadoc 规范 其他规范 命名规范 1、包名:使用小写字母,多个单词之间用"."分隔,例如ÿ…...
【Java集合框架】篇五:Map接口
1. Map及实现类特点 Map:存储key-value HashMap:线程不安全,效率高,key和value都可以为null,底层使用 数组单向链表红黑树 结构(jdk8)。 LinkedHashMap:是HashMap的子类࿰…...
Typroa安装教程
Markdown 是一种轻量级标记语言,创始人为约翰格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记…...
【MySQL】存储引擎
目录 1.MySQL体系结构 2.存储引擎介绍 3.存储引擎特点 4.存储引擎选择 1.MySQL体系结构 MySQL整体的逻辑结构可以分为4层,客户层、服务层、存储引擎层、数据层 客户层 客户层:进行相关的连接处理、权限控制、安全处理等操作 服务层 服务层负责与客户层进行连接处理、处…...
芯驰(E3-gateway)开发板环境搭建以及调试遇到问题的解决
1-Windows下环境配置 可以在Windows上使用命令行或者IAR IDE编译SSDK项目。Windows编译依赖的工具已经包含在 prebuilts/windows 目录中,包括编译器、Python和命令行工具。 1.1.1 CMD SSDK集成 msys 工具,可以在Windows命令行中完成SDK的配置、编译和…...
【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档
目录Prometheus简介下载软件包安装部署创建用户创建Systemd服务修改配置文件prometheus.yml启动Prometheusnode exporter下载软件包安装部署添加用户创建systemd服务启动node_exportergraphite_exporter下载软件包安装部署创建systemd服务启动 graphite_exporterPrometheus 简介…...
《C++ Primer》 第十一章 关联容器
《C Primer》 第十一章 关联容器 11.1 使用关联容器 使用map: //统计每个单词在输入中出现的次数 map<string, size_t> word_count;//string到size_t的空map string word; while(cin>>word)word_count[word];//提取word的计数器并将其加1 for(const auto &w:…...
WebRTC标准与框架解读(1)
1、如果让我来设计webrtc框架我在分析源码的时候,都喜欢做这样一件事情:如果让我来设计它,我会怎么做?大家可以紧跟我的思路,分析一下WebRTC为什么如此设计。为了对整个框架有有一个全面的了解,我们首先要做…...
数据结构的一些基础概念
一 基本术语 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处…...
【Python每日一练】总目录(不断更新中...)
Python 2023.03 20230303 1. 两数之和 ★ 2. 组合总和 ★★ 3. 相同的树 ★★ 20230302 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 20230301 1. 只出现一次的数字 2. 以特殊格式处理连续增加的数字 3. 最短回文串 Python 2023.02 20230228 1. 螺旋矩阵 …...
latex插入图片(自用)
加入宏包:\usepackage{graphicx} 使用 \includegraphics 命令进行插图。 \includegraphics[]{}: 第一参数[]:对图片做一些适当的调整(设定图片的高度和宽度或者按比例缩放) 第二参数{}:图片的名字…...
【微信小程序】-- 网络数据请求(十九)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
K8S 实用工具之一 - 如何合并多个 kubeconfig?
开篇 📜 引言: 磨刀不误砍柴工工欲善其事必先利其器 K8S 集群规模,有的公司倾向于少量大规模 K8S 集群,也有的公司会倾向于大量小规模的 K8S 集群。 如果是第二种情况,是否有一个简单的 kubectl 命令来获取一个 kubec…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
