STM32入门——uKeil5 MDK 的使用(基于固件库)

news2025/2/23 13:24:07

文章目录

  • 1 Keil uVision5 MDK 是什么
  • 2 建立一个标准库函数工程
    • 2.1 前期准备
    • 2.2 建立工程
    • 2.3 建立组文件夹
    • 2.4 添加文件
    • 2.4 配置“魔术棒”选项卡
    • 2.5 建立 main 函数

1 Keil uVision5 MDK 是什么

Keil 软件是一种统称,它包含编辑器、编译器、链接器、调试器等众多工具为一体的集成开发环境(IDE)。
Keil MDK,也叫MDK-ARM,是针对【ARM内核】单片机,比如:STM32F1、 STM32F4、LPC1788、GD32等的编译器。

软件与芯片安装包和工程模板
链接:https://pan.baidu.com/s/1xGKF97gkgCAK56XC1yLsJg
提取码:qcyx

2 建立一个标准库函数工程

2.1 前期准备

在硬盘上建立一个任意的目录(例:stm32-led)中英文都可以,然后在它之下再新建 4个
文件夹,具体如下:
在这里插入图片描述

名称作用
Doc用来存放工程说明文件,由写程序的人添加
Libraries存放库文件
Porject存放工程文件
User存放用户编写的驱动文件

在本地新建好文件夹后,把准备好的库文件添加到相应的文件夹下:

名称作用
Doc工程说明文件.txt
LibrariesCMSIS:里面跟着放 CM3 内核的相关库文件,以及 STM32F10X_StdPeriph_Driver\src 文件下的全部 C文件
Porject存放工程文件
UserSTM32F10x_conf.h、STM32F10x_it.h、main.c 文件

2.2 建立工程

打开Keil软件后就会进入一个界面 ,如图:在这里插入图片描述
点击Project然后点击New uVision Project,就会出现一个新建工程界面,如图:在这里插入图片描述
在这里插入图片描述
将工程保存至 Project 文件夹下,并给这个工程起名叫stm32-led,软件会自动添加扩展名.uvproj,如上图。

直接单击“保存”按钮,工程会自动保存为stm32-led.uvproj文件,下次要打开LED这个工程时,可以直接找到文件夹,双击.uvproj即可打开。

保存之后会弹出一个对话框,如图:在这里插入图片描述
这个对话框是用来选择单片机的型号的,例如我们使用的STM32F1系列的单片机。在这里插入图片描述

由于MDK中只有ARM的内核选择,我们要使用STM32单片机需要自己手动添加

在这里插入图片描述
选择完成之后会有上图界面是用来在线添加库文件,我们先将其关闭后手动添加。

2.3 建立组文件夹

在新建的工程中添加 5 个组文件夹,用来存放各种不同的文件,文件从本地建好的工程文件夹下
获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。

名称作用
STARTUP用来存放 startup_stm32f10x_hd.s
CMSIS存放 core_cm3.c system_stm32f10x.c
FWLB存放 STM32F10X_StdPeriph_Driver\src 文件下的全部 C文件
USER存放用户编写的驱动文件
DOC存放工程说明文件

在这里插入图片描述
右键 Target 1 然后点击 Add Group…

2.4 添加文件

先把上面提到的文件从 ST 标准库中复制到工程模版对应文件夹的目录下,然后在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。
在这里插入图片描述

2.4 配置“魔术棒”选项卡

这一步的配置工作很重要,很多人串口用不了 printf 函数,编译有问题,下载有问题,都是这个步骤的配置出了错。

(1) Target 中选中微库“Use MicroLib”,为的是在日后编写串口驱动的时候可以使用 printf 函数。
在这里插入图片描述

(2) 在 Output 选项卡中把输出文件夹定位到我们工程目录下的“output”文件夹,如果想在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。
在这里插入图片描述

(3) 在 Listing 选项卡中把输出文件夹定位到我们工程目录下的“Listing”文件夹。
在这里插入图片描述

(4) 在 C/C++ 选项卡中添加处理宏及编译器编译的时候查找的头文件路径。如果头文件路径添加有误,则编译的时候会报错找不到头文件。
在这里插入图片描述
在这个选项中添加宏,就相当于我们在文件中使用“#define”语句定义宏一样。在编译器中添加宏的好处就是,只要用了这个模版,就不用源文件中修改代码。

  • STM32F10X_HD 宏:为了告诉 STM32 标准库,我们使用的芯片类型是 STM32 型号是大容量的,使 STM32 标准库根据我们选定的芯片型号来配置。

  • USE_STDPERIPH_DRIVER 宏:为了让 stm32f10x.h 包含 stm32f10x_conf.h 这个头文件。

“Include Paths ”这里添加的是头文件的路径,如果编译的时候提示说找不到头文件,一般就是这里配置出了问题。你把头文件放到了哪个文件夹,就把该文件夹添加到这里即可。(请使用图中的方法用文件浏览器去添加路径,不要直接手打路径,容易出错)。

2.5 建立 main 函数

在这里插入图片描述

敲出基本框架,编译:
在这里插入图片描述
0 错误,0 警告,至此工程模板建立成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

冰冰学习笔记:二叉搜索树

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

堆外内存和堆内内存及虚引用的应用

目录 内存区域划分: 元空间 程序计数器 直接内存 对象的创建 对象的访问定位 判断对象是否存活 堆外内存 堆内内存的缺点以及引入堆外内存 为什么需要堆外内存? 如何分配堆外内存? 如何回收堆外内存? 1) System.gc()…

C语言函数章--第二弹(让冤种室友用你的函数,但不给他看函数源码)

前言 💖作者:龟龟不断向前 ✨简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。 👻专栏:C初阶知识点 👻工具分享: 刷题: 牛客网 leetcode笔记软件&#xff…

Error注入攻击

💪💪Error注入攻击1.创建漏洞环境2.漏洞攻击2.1判断是否有注入2.2信息收集2.3注入获取数据库名2.4注入获取表名2.5注入获取列名2.6注入获取信息3.sql靶场实战1.创建漏洞环境 💪💪第一步创建sql环境,直接再mysql下运行 …

Flutter——软件安装与环境配置

Flutter入门官网Flutter SDK下载创建Flutter项目在ios上运行第一个Flutter项目效果图代码总结官网 Flutter开发手册网址如下 Flutter SDK下载 下载地址 第一步:进入官网,选择自己相对应的系统 第二步:选择对应版本SDK并下载到本地 创建Flu…

electron调用dll文件

Electron 对系统层能力的使用可能比较弱,此时需要求助 Python、C、C# 等语言,通过 ffi-napi 库可以让 Node.js 使用 C dll,通过 electron-edge-js 库可以让 Node.js 使用 C# dll 1. 先确定dll文件是用什么语言写的. 使用peid 应用查看- 这个…

【Transformers】第 2 章:主题的实践介绍

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

Node.js | 基于 MongoDB 的简易用户管理系统

🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结&…

C++秋招经验贴

文章目录一、个人背景及秋招情况1.个人背景2.秋招情况二、求职C强相关开发岗位的准备过程以及一些建议1. 八股2. 力扣刷题3. 实习4. 项目三、总结一、个人背景及秋招情况 1.个人背景 本科:二本,材料专业   硕士:211硕,光学工程…

TI IWR1642毫米波雷达使用串口原始数据采集与分析

本文编辑:调皮哥的小助理 1.引言 如果文章能够给你带来价值,希望能够关注我。 如果文章能够让你学习到知识,希望你能够点个赞! 好了下面开始今天的学习内容吧。 今天给大家分享的是 《TI 的IWR1642毫米波雷达使用串口原始数据…

深度学习入门(十五)环境和分布偏移(了解)

深度学习入门(十五)环境和分布偏移前言环境和分布偏移教材1 分布偏移的类型1.1 协变量偏移1.2 标签偏移1.3 概念偏移2 分布偏移示例2.1医学诊断2.2 自动驾驶汽车2.3 非平稳分布2.4 更多轶事3 分布偏移纠正3.1 经验风险与实际风险3.2 协变量偏移纠正3.3 标…

MATLAB | 一起来感受数学之美叭

前两天去观摩了MATHWORKS官方举办的Mathematics is beautiful数学之美投票比赛,见到了很多非常惊艳的作品,在这里分享给大家让大家一同感受大神们的创造力,接下来由我来做全程解说。 虽然看起来代码都写好了,,&#x…

程序员眼中看到的网页是如何制作出来的?

一、认识网页 在学习之初,我们需要认识一下网页的概念,因为网页与我们的 html是息息相关的。 那么接下来我们来看一下,我们经常去通过浏览器查看的网页,它的本质是什么?在此我们需要去做一个对比。我们眼中看到的网页…

聚类算法概要及相关知识准备

聚类的概念 聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好。 将物理或抽象对象的集合分成由类似对象组成的多个类或簇(cluster)的过程被称为…

SpringBoot+Vue的社区疫情防控管理系统|基于Python+Django的社区物资采购系统

💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等。平常会做一些项目定制化开发…

Cookie使用详解

Cookie使用详解 目录Cookie使用详解理论知识前言创建Cookiecookie 的属性介绍name 、valuedomainpathExpires 、Max-AgeSameSiteSecure,HttpOnlyCookie与跨域、安全知识点小结实践相关配置修改代码实践实验过程记录其它小结理论知识 前言 HTTP Cookie(…

使用Charles和iPhone进行微信小程序抓包详解

基于工作原因,需要对一款微信小程序进行测试。本次任务是纯黑盒方式,所以只有通过抓包的方式找到接口及参数列表,再逐一进行功能和性能测试。 一、使用工具 网络抓包工具:Charles 设备:iPhone6s,iPhone1…

数据分析 | Pandas 200道练习题,每日10道题,学完必成大神(8)

文章目录前期准备1. 将收盘价5日均线,20日均线与原始数据绘制在同一个图上2. 按周为采样规则,取一周收盘价的最大值3. 绘重制采样数据与原始数据4. 将数据往后移动5天、5. 将数据向前移动5天6. 使用expending函数计算开盘价的移动窗口的均值7. 绘制上一题…

牛客刷题系列(汽水瓶,跳台阶扩展问题,斐波那契凤尾)

牛客刷题系列一:汽水瓶题目链接常规写法简便写法二.跳台阶扩展问题三:斐波那契凤尾很多小伙伴为了刷题发愁 今天为大家推荐一款刷题神奇哦:刷题面试神器牛客 各大互联网大厂面试真题。从基础到入阶乃至原理刨析类面试题 应有尽有,…

云IDE介绍——CSDN开发云

云IDE产品介绍云IDE使用教程 免费使用地址:点击【云IDE】,即可开始创建工作空间啦~ 作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页&#xf…