新建基于STM32F103ZET6的工程-寄存器版本
1、新建空白工程
新建一个文件夹,用来存放新建的工程文件。在这个新建的文件夹下创建MDK-PRO和OUTPUT两个子文件夹。MDK-PRO文件夹用来存放工程文件;OUTPUT用来存放工程编译器后输出的文件。

打开MDK软件,点击“Project ->New uVision Project”创建新工程。

输入工程的名称并选择存放新建工程的目录。

选择芯片型号。

点击OK后就创建了一个空工程。如图

用鼠标右击MDK工程栏中的Group,选择‘Manage Project Items’。然后添加如下图所示的Group。


接下来先将工程的编译输出文件设置到OUTPUT文件夹中。在MDK软件中,选择“Options for Target”,在弹出来的界面中选择Output选项卡,点击“Select Folder for Listings…”,在弹出来的界面中选择OUTPUT文件夹。

然后再选择Listing选项卡,点击“Select Folder for Listings…”,也在弹出来的界面中选择OUTPUT文件夹。

2、添加启动文件
一般STM32的工程都需要加载启动代码,启动代码是一段和硬件相关的汇编代码。
启动代码的主要作用如下:
堆栈(SP)的初始化。
初始化程序计数器(PC)。
设置向量表异常事件的入口地址。
调用main函数。
ST公司已经写好了启动文件,只要找到对应芯片的启动文件然后调用就可以了。
ST公司提供了3个启动文件,这三个文件分别是:
startup_stm32f10x_ld.s是小容量IC的启动文件。
startup_stm32f10x_md.s是中容量IC的启动文件。
startup_stm32f10x_hd.s是大容量IC的启动文件。
小容量是指FLASH≤32KByte的IC。
中容量是指64KByte≤FLASH≤128KByte的IC。
大容量是指256KByte≤FLASH≤512KByte的IC。
STM32F103ZET6的FLASH容量为512KB,是大容量的IC,所以使用的启动文件是:startup_stm32f10x_hd.s。
startup_stm32f10x_hd.s文件可以在官方提供的固件库里找到。
将startup_stm32f10x_hd.s复制到MDK-PRO文件夹下。
将startup_stm32f10x_hd.s文件添加到MDK软件中。


选中startup_stm32f10x_hd.s文件后点击add。

3、新建源文件
点击新建文档,输入相应的内容,然后保存为.c文件,将.c文件保存在MDK-PRO文件夹中,然后将.c文件添加到工程当中。

如上图所示,点击编译并没有发现任何错误,但这个工程只是一个空的工程,什么操作都没有,寄存器也没有封装。如果这时候要操作寄存器,就得直接用指针操作寄存器的地址,如操作GPIOF的ODR寄存器,就得使用 *(unsigned int *)(0x40011C0C)。这样显得比较麻烦,可以通过添加ST提供的头文件来操作寄存器,其提供的头文件已经将STM32的寄存器封装好。
4、添加头文件
STM32的不同类型的芯片的头文件是有差别的,STM32F103ZET6的头文件是stm32f10x.h,这些头文件可以在ST提供的固件库里找到。将stm32f10x.h文件放到工程目录下,然后将stm32f10x.h文件包含进项目当中。


点击编译,发现错误,点击提示的错误会跳转到出错的地方,如下图:

错误提示说找不到core_cm3.h文件,在stm32f10x.h文件中引用了一些头文件,必须找到这些文件并放到工程中才能消除错误,通过错误提示,可以查找到缺少的头文件,分别是:cmsis_armcc.h、core_cm3.h、core_cmFunc.h、core_cmInstr.h和system_stm32f10x.h等头文件,这些文件都能在ST提供的固件库中找到。添加完这些文件之后再点击编译就可以通过了。


stm32f10x.h文件是通过结构体封装STM32寄存器的,使用寄存器可以通过结构体来操作。如下图中的程序控制GPIOF的寄存器。

新建基于STM32F103ZET6的工程-寄存器版本的更多相关文章
- 新建基于STM32F103ZET6的工程-HAL库版本
1.STM32F103ZET6简介 STM32F103ZET6的FLASH容量为512K,64K的SRAM.按照STM32芯片的容量产品划分,STM32F103ZET6属于大容量的芯片. 2.下载HA ...
- STM3210x建工程库函数版本
1.首先下载一个固件库,我下载的是stm32f10x_stdperiph_lib 3.5V版的 2.新建一个文件夹,可命名为"STM32建工程库函数版本" 3.在"STM ...
- Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课
Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...
- SpringBoot之整合Redis分析和实现-基于Spring Boot2.0.2版本
背景介绍 公司最近的新项目在进行技术框架升级,基于的Spring Boot的版本是2.0.2,整合Redis数据库.网上基于2.X版本的整个Redis少之又少,中间踩了不少坑,特此把整合过程记录,以供 ...
- PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版)
PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版) 先看流程图: 大概介绍一下: 版本选择使用jenkins 中的 git parameter 插件实现 回滚方式 ...
- 基于unity3d游戏的android版本逆向初探
https://bbs.pediy.com/thread-212532.htm [文章标题]: 基于unity3d游戏的android版本逆向初探 [文章作者]: dreaman [作者邮箱]: [e ...
- x86CPU 实模式 保护模式 傻傻分不清楚? 基于Xv6-OS 分析CR0 寄存器
基于Xv6-OS 分析CR0 寄存器 之前一直认为晕乎乎的...啥?什么时候切换real model,怎么切换,为什么要切换? ------------------------------------ ...
- STCubeMX软件新建Keil和IAR工程使用步骤:
STCubeMX软件新建Keil和IAR工程使用步骤:首先是软件下载(也可在我们的百度云下载):1.STCubeMX下载地址: http://www.stmicroelectronics.co ...
- 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)
[K8S]K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本) 写在前面 K8S集群部署成功了,如何对集群进行可视化管理呢?别着急,接下来,我们一 ...
随机推荐
- 负载均衡框架 ribbon 一
Ribbon开源地址:https://github.com/Netflix/ribbon/wiki/Getting-Started 1.Ribbon简介 负载均衡框架,支持可插拔式的负载均衡规则 支持 ...
- 用反射机制和pandas,实现excel数据的读取以及参数化${arg}的赋值
反射类:class GetData: index = pd.read_excel(file_name, sheet_name).loc[0, ['index']].values[0] email = ...
- Redis使用指南
原文链接 能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 设置过期时间.释放资源 使用Redis做K-V存储,一定要注意过期时间的把控,任何K- ...
- C语言程序设计(九) 指针
第九章 指针 C程序中的变量都是存储在计算机内存特定的存储单元中的,内存中的每个单元都有唯一的地址 通过取地址运算符&可以获得变量的地址 //L9-1 #include <stdio.h ...
- 初识JVM:(一)JVM工作原理和流程
本文主要参考:http://blog.csdn.net/CSDN_980979768/article/details/47281037?locationNum=7&fps=1 声明:主要用于个 ...
- created:异步初始化数据都应该放到 created里面
created:异步初始化数据都应该放到 created里面
- sqlmap详解
sqlmap是一个自动化的sql注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库有MySQL, Oracle,PostgreSQL, Microsof ...
- Android UI性能测试——使用 Gfxinfo 衡量性能
Android官方文档翻译 原文地址:https://developer.android.com/training/testing/performance参考:https://www.jianshu. ...
- video.js 视频自动全屏播放
1.头部引用脚本 <link href="css/video-js.min.css" rel="stylesheet"> <link href ...
- 小白学 Python 数据分析(20):pyecharts 概述
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...