STM32F4新建寄存器版本MDK(Keil5)工程(正点原子)

news2024/12/28 3:32:26

1. 前期准备

1.1 下载 STM32Cube 固件包

1.1.1 ST官网搜索STM32Cube

首先进入ST官网,在搜索栏输入 STM32Cube
在这里插入图片描述
找到 STM32CubeF4 点击进去在这里插入图片描述
在这里插入图片描述
在这里可以选择版本进行下载,这里我选择1.26.0(后续不使用官方的因为太冗杂了,这里只是作演示用)
在这里插入图片描述

选择ACCEPT(若点击后直接开始下载了,则不用管后面的步骤,直接解压即可)
在这里插入图片描述
输入自己真实的邮箱地址,然后点击下载
在这里插入图片描述
在这里插入图片描述
我们可以在邮件中收到这样的一封邮件,然后点击下载
在这里插入图片描述
下载完成后解压
在这里插入图片描述

1.1.2 正点原子资料

A 盘→8,STM32 参考资料→1,STM32CubeXX固件包
在这里插入图片描述

1.2 搭建开发环境

2. 新建寄存器版本MDK工程

首先新建一个文件夹作为项目的根目录,文件夹名字可以自定义,我使用 Template 作为名字,
如图所示
在这里插入图片描述

2.1 新建工程文件夹

需要新建下面 5 个文件夹

文件夹名称作用
Drivers存放与硬件相关的驱动层文件
Middlewares存放中间层文件
Output存放工程编译输出文件
Projects存放 MDK 工程文件
User存放 HAL 库用户配置文件、main.c、中断处理文件,以及分散加载文件等

也可以新建一个 readme.txt,最后层级结构如下图所示
在这里插入图片描述

2.1.1 Drivers

文件夹名称作用
BSP存放开发板板级支持包驱动代码,如各种外设驱动
CMSIS存放 CMSIS 底层代码,如启动文件(.s文件)等
SYSTEM存放正点原子系统级核心驱动代码,如 sys.c、delay.c 和 usart.c 等

BSP文件夹需要自己新建,CMSIS 和 SYSTEM 通过拷贝得到,最后的文件夹目录如下图所示
在这里插入图片描述
CMSIS 和 SYSTEM 我们可以随便打开一个正点原子的例程(注意是寄存器版本)拷贝过来,这里就不做演示了

2.1.2 Middlewares

该文件夹用于存放正点原子和其他第三方提供的中间层代码(组件/Lib 等), 如: USMART、MALLOC、 TEXT、 FATFS、 USB、 LWIP、各种 OS、各种 GUI 等

2.1.3 Output

该文件夹用于存放编译器编译工程输出的中间文件,比如: .hex、 .bin、 .o 文件等

2.1.4 Projects

该文件夹用于存放编译器(MDK、 IAR 等)工程文件,我们主要用 MDK,为了方便区分, 我们在该文件夹下新建: MDK-ARM 文件夹,用于存放 MDK 的工程文件

2.1.4 User

该文件夹用于存放用户编写的代码,如: main.c 等

2.2 新建工程框架

2.2.1 新建工程

打开 Keil5 ,在上面的工具栏中找到 Project ,然后按照下图操作
在这里插入图片描述
然后选择刚刚新建的工程文件夹的 Projects 目录,输入项目名然后保存
在这里插入图片描述

2.2.2 选择主控型号

在选择型号的地方选择 STM32F407ZG ,如果这里没有这个型号说明开发环境没有搭建好(没有安装 STM32F4 的 Pack )
在这里插入图片描述
在这里插入图片描述
这里是让配置一些东西,我们不需要配置直接点击 Cancel

在这里插入图片描述

2.2.3 删除文件夹

我们打开之前新建工程的 Projects 目录,发现 Keil5 新建了很多的文件夹/文件
在这里插入图片描述

文件夹名称作用
DebugConfig用于存放调试设置信息文件(.dbgconf),不可删除!
Listings用于存放编译过程产生的链接列表等文件
Objects用于存放编译过程产生的调试信息、.hex、预览、.lib文件等

Listings和Objects在后面需要设置到Output文件夹中,所以在这里给删掉,删掉后如下图所示
在这里插入图片描述

2.3 添加文件

2.3.1 设置工程名和分组名

点击下图红框中的按钮
在这里插入图片描述

在弹出来的窗口中,按照下图的方式设置好工程名字和分组名
在这里插入图片描述
然后在 Startup 分组中点击 Add Files
在这里插入图片描述

2.3.2 添加启动文件

在下图的层级结构中找到 startup_stm32f407xx
在这里插入图片描述
如果打开文件夹没有发现 startup_stm32f407xx ,则在文件类型的地方选择 All files
在这里插入图片描述
然后我们可以在左侧看到添加进来的启动文件
在这里插入图片描述
我们用不到编译器的内存管理函数,为节省内存,将 Heap_Size 改成 0,如下图
在这里插入图片描述
寄存器代码不需要调用SystemInit函数,因此修改Reset_Handler函数,去掉SystemInit调用,如下图(如果是复制正点原子例程的 CMSIS 则不需要修改,因为他已经修改好了)
在这里插入图片描述

2.3.3 添加 SYSTEM源码

在这里插入图片描述
最后的工程结构如下(readme是顺手加进去的)
在这里插入图片描述

2.4 魔术棒设置

2.5 添加main.c编写代码

3. 下载验证

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

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

相关文章

CSDN周赛回顾

CSDN周赛回顾 55期参赛体验近两期难度题型报告 参赛回顾CSDN 题库每日一练举报题库 最后的吐槽新题目相似度判定奖品 55期参赛体验 近两期难度 最近的题目有点难度了,老顾个人感觉至少达到了中级算法程度了,所以老顾的成绩变得稀碎。。。。 题型 再来…

Centos7 第一次正常连接, 隔天连接不上

记录现象: ping:www.baidu.com bash: ping:www.baidu.com: 未找到命令... 其他没有配置错的情况下 1. 原因 vi /etc/sysconfig/network-scripts/ifcfg-ens33 因为配置的静态链接所以 不需要NetworkManager 2. 解决方案 a. 关闭NetworkManager systemctl stop NetworkMa…

Docker 下 OnlyOffice 社区版安装

一、官方信息 官网地址:ONLYOFFICE - Secure Online Office | ONLYOFFICE 官方文档:Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICE 二、介绍 ONLYOFFICE Docs是一个在线办公套件,包括文本、电子表格和演示文稿的…

小红书产品运营的书有哪些,爆款笔记的套路

随着小红书平台的规模逐渐扩大,已经不仅仅局限于单一的产业了,甚至于出现了多元化的一个现象。有关小红书运营的书的出版就是最好的证明。今天,就来和大家一起探讨一下小红书产品运营的书有哪些,爆款笔记的套路。 一、小红书运营的…

十四、进程信号

文章目录 一、什么是信号二、信号列表(一)查看系统定义的信号列表 三、信号处理四、信号产生(一)通过终端按键产生信号1.什么是核心转储?2.核心转储功能有什么用?3.core dump标志 (二&#xff0…

突围低代码下半场,未来悬而未决

低代码行业的整个赛道的未来依然蒙着一层充满未知的迷雾,最开始,低代码的目的是让不具有软件开发能力的用户也能根据自己的需要创建各种应用程序,由此也诞生了“IT革命”“抢走程序员饭碗”等噱头。 但噱头归噱头,程序员的饭碗并…

软件测试之自动化测试详解

文章目录 一.前言二.selenium介绍三.selenium的组成部分四.Selenium的环境搭建下载浏览器配置环境变量验证环境是否搭建成功 五.Selenium的API打开浏览器元素的定位操作测试对象等待操作信息获取鼠标操作键盘操作选项操作浏览器操作 六.需要用到的包 一.前言 自动化测试指软件…

软件接口测试有什么作用?接口测试有哪些好用工具?

一、软件接口测试有什么作用? 在软件开发过程中,接口是不可避免的一部分。接口测试是为了检查软件系统中不同模块之间的接口能否正常工作,以及模块之间的数据是否能够互相传输而进行的测试。接口测试的主要作用包括保证系统区域间的互通性、降低软件的…

树莓派 CM4 RTC 时间同步

需求:树莓派 接pcf85063a RTC模块进行时间同步,上层使用Qt 开发应用,进行时间的读取与设置 一,树莓派配置: /boot/config.ini 文件 修改 二,读取时间 直接读取系统时间 TIME TimerManager::getSystemLocalTime() {TIME t;time…

【高级语言程序设计(一)】第 7 章:指针

目录 一、指针和指针变量 (1)指针 (2)指针变量 (3)指针变量的定义 (4)指针变量的初始化 (5)指针变量的一般使用 ① 给指针变量赋值 ② 直接使用指针…

java基础知识快速入门总结

你好,世界! 1、源代码组织方式 Java程序由packageclass组成,package对应目录的相对路径,class对应文件,如 E:\Workspaces\MyEclipse 10\JavaStudy\src\com\happyframework\javastudy\hello\Hello.java 关于class有如…

中国人民大学与加拿大女王大学金融硕士——在职人员成长路上的选择与追求

在职人员职场充电,选择中国人民大学与加拿大女王大学金融硕士项目是正确的吗?其实每个选择都有各自的收获和代价,不能简单的用“优劣”、“好坏”去衡量。要看这个选择是否给给予你想要的,还要看这个选择的代价是否是你愿意承受并…

SpringBoot Controller层传入的参数进行解密

一、 应用场景 当和第三方应用对接系统的时候, 可能别人的参数加密方式和我们的不相同,那就需要和对方沟通好他们的接口参数是如何加密的,达成一致后才方便后续的工作开展。 二、示例说明 采用Springboot 项目开发,先在compone…

feat:使用企业微信企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)

背景:企业微信应用使用企业微信JS-SDK的分享接口实现分享样式自定义 原生: 需要实现成: 企业微信JS-SDK 是企业微信面向网页开发者提供的 基于企业微信内 的网页开发工具包。 通过使用企业微信JS-SDK,网页开发者 可借助企业微信…

单片机的UART升级固件流程

文章目录 单片机的烧录方式ISP In-Systen Programming 系统编程ICP In-Circuit Programming 电路编程IAP In-Application Programming 应用编程BootLoader 引导程序 串口下载的重难点启动流程基于IAP设计的STM32程序启动流程 随着技术的发展,单片机的功能和性能得到…

AWS-S3通用存储操作,操作minio、oss、cos等所有兼容s3协议的云存储(含有大文件分片上传实现)

一、介绍 通用存储操作common包&#xff0c;支持所有兼容amazon-s3协议的云存储&#xff0c;如minio、oss、cos等&#xff0c;以后客户用啥云储存一套代码都能搞定了&#xff0c;真棒~ 二、代码结构 三、代码实现 3.1 pom.xml <?xml version"1.0" encoding&q…

平安银行广州分行立足地域文化,增强差异化权益服务软实力

立足地域文化&#xff0c;拓展差异化权益服务 瓦屋纸窗之下&#xff0c;一盏清茶&#xff0c;三五好友&#xff0c;怡然自若。中国人对茶的喜爱由来已久&#xff0c;茶文化已成为中华传统文化中一张亮丽的名片&#xff0c;而广东茶文化则是中国四大茶文化系列之一。平安银行广州…

链式哈希,一致性哈希,倒排表

在普通的查询中&#xff0c;通过关键码的比较进行查找&#xff0c;而哈希是根据关键码直接定位到数据项 哈希冲突&#xff1a;同一个关键码经过哈希函数后指向同一个记录集 链式哈希 using namespace std; #define M 13 typedef int KeyType; //typedef struct //{ // KeyTyp…

开放式耳机和封闭式耳机的区别有哪些?开放式耳机有哪些推荐?

开放式耳机和封闭式耳机的区别主要在以下几个方面&#xff1a; 设计结构&#xff1a;开放式耳机通常有一个开放的设计&#xff0c;不需要塞入耳即可收听音乐&#xff0c;同时与外部环境进行交互。封闭式耳机则是封闭的设计&#xff0c;耳机驱动单元之间是封闭和隔离的&#xf…

电子科技大学编译原理复习笔记(一):绪论

目录 前言 重点一览 语言的分类 冯诺依曼体系结构 绑定的概念 变量 虚拟机 程序单元 本章小结 前言 本复习笔记基于张老师的课堂PPT&#xff0c;供自己期末复习与学弟学妹参考用。 重点一览 语言的分类 命令式语言&#xff08;强制式语言&#xff09;&#xff1a;冯…