当前位置: 首页 > news >正文

嵌入式学习笔记——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、以及其他用户源文件以及头文件等等。
blog.csdnimg.cn/2a11dfb39af244d0a63ed262bb870d11.png)

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客户京微齐力为例&#xff0…...

【信息学奥赛】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、包名:使用小写字母,多个单词之间用"."分隔,例如&#xff…...

【Java集合框架】篇五:Map接口

1. Map及实现类特点 Map:存储key-value HashMap:线程不安全,效率高,key和value都可以为null,底层使用 数组单向链表红黑树 结构(jdk8)。 LinkedHashMap:是HashMap的子类&#xff0…...

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框架我在分析源码的时候&#xff0c;都喜欢做这样一件事情&#xff1a;如果让我来设计它&#xff0c;我会怎么做&#xff1f;大家可以紧跟我的思路&#xff0c;分析一下WebRTC为什么如此设计。为了对整个框架有有一个全面的了解&#xff0c;我们首先要做…...

数据结构的一些基础概念

一 基本术语 数据&#xff1a;是描述客观事物的符号&#xff0c;是计算机中可以操作的对象&#xff0c;是能被计算机识别&#xff0c;并输入给计算机处理的符号集合。 数据元素&#xff1a;是组成数据的&#xff0c;有一定意义的基本单位&#xff0c;在计算机中通常作为整体处…...

【Python每日一练】总目录(不断更新中...)

Python 2023.03 20230303 1. 两数之和 ★ 2. 组合总和 ★★ 3. 相同的树 ★★ 20230302 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 20230301 1. 只出现一次的数字 2. 以特殊格式处理连续增加的数字 3. 最短回文串 Python 2023.02 20230228 1. 螺旋矩阵 …...

latex插入图片(自用)

加入宏包&#xff1a;\usepackage{graphicx} 使用 \includegraphics 命令进行插图。 \includegraphics[]{}&#xff1a; 第一参数[]&#xff1a;对图片做一些适当的调整&#xff08;设定图片的高度和宽度或者按比例缩放&#xff09; 第二参数{}&#xff1a;图片的名字&#xf…...

【微信小程序】-- 网络数据请求(十九)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…...

K8S 实用工具之一 - 如何合并多个 kubeconfig?

开篇 &#x1f4dc; 引言&#xff1a; 磨刀不误砍柴工工欲善其事必先利其器 K8S 集群规模&#xff0c;有的公司倾向于少量大规模 K8S 集群&#xff0c;也有的公司会倾向于大量小规模的 K8S 集群。 如果是第二种情况&#xff0c;是否有一个简单的 kubectl 命令来获取一个 kubec…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...