嵌入式学习笔记——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…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...
