第13章.创建MDK工程-基于标准库版

目录

0. 《STM32单片机自学教程》专栏

13.1 新建本地工程文件夹

13.2 新建工程

13.2.1 新建工程

13.2.2 新建组

13.2-3 添加文件 

13.3 配置魔术棒选项卡

13.3.1 Output 选项卡

13.3.2 C/C++选项配置 

13.3.3 Dubug选项配置

13.4 使用标准库点亮LED

参考资料:


0. 《STM32单片机自学教程》专栏

        本文作为专栏《STM32单片机自学教程》专栏其中的一部分,返回专栏总纲,阅读所有文章,点击Link:  

STM32单片机自学教程-[目录总纲]_stm32 学习-CSDN博客     

        上节我们介绍了STM32的标准库,现在我们就可以基于标准库来建立工程了。基于标准库的模版比较固定,而且还是稍微有点麻烦的。所以我们经常是建立一个空的工程模版,后面开发的时候直接复制工程模板进行开发。现在我们就一步步的操作一下。

13.1 新建本地工程文件夹

        在本地我们新建文件夹“Led_StdLibVersion”用于存放工程。然后新建4个文件夹:“Doc”,“StdLibrary”,” System”,”User”,如图13.1-1所示。当然这个不是固定的,按自己的喜好建立即可,只要文件夹清晰,一看文件夹就知道作用是干什么的就行了。

图13.1-1 新建文件夹目录

下面针对每个文件夹需要放的文件进行说明:

Doc文件夹:

用来存放程序相关的说明文件,比如程序怎么使用,注意事项等等。

StdLibrary文件夹:

主要是把外设相关的库函数放入,即\Libraries\STM32F10x_StdPeriph_Driver下inc和src两个文件夹下的所有文件。如图13.1-2.

图13.1-2 StdLibrary文件夹

System文件:

        放入系统相关的文件,包含启动,内核及外设的寄存器映射,系统时钟配置等核心函数。主要是STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3中的文件:core_cm3.c, core_cm3.h, stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h以及启动汇编文件startup_stm32f10x_md.s(注意,不同型号的启动文件不一样,md的是STM32F103C8T6型号的,选择方法前面章节有介绍,这里不再赘述。)如图13.1-3.

图13.1-3 system文件夹

User文件夹:

       存放用户编写的函数,如main.c,以及中断服务函数system_stm32f10x.c, system_stm32f10x.h以及stm32f10x_conf.h。如图13.1-4.

图13.1-4 User文件夹

 

13.2 新建工程

13.2.1 新建工程

        在我们新建的“Led_StdLibVersion”文件夹下新建工程,命名“project”。这个过程前面讲解过,这里不再赘述

13.2.2 新建组

        我们新建3个组,和我们新建的文件夹同名:“StdLibrary”,” System”,”User”。如图13.2-1所示。

图13.2-1 新建组

13.2-3 添加文件 

图13.2-2 添加文件

        如上图所示,将同名文件夹下的文件,全部添加到MDK的同名组中。添加完成后如图13.2-3所示。

13.3 配置魔术棒选项卡

13.3.1 Output 选项卡

        在Output 选项卡中把输出文件夹定位可以定位到指定文件夹,这里我一般习惯默认系统自动生成的文件夹object,这一步可不用操作。如果想在编译的过程中生成 hex 文件,可以把 Create HEX File 选项勾上。如下图:

图13.3-1 output选项卡

图13.3-2 工程组添加文件后

13.3.2 C/C++选项配置 

图13.3-3 C/C++选项卡设置

        如上图,C/C++选项开主要配置2个地方:

        ①Define配置:

        在这个选项中添加宏,就相当于我们在程序中使用“#define”定义宏的效果是一样的。但是如果放在编译器中添加这个宏,优势就是后面我们新建工程的时候只要用了这个模版,就不用再在程序文件中修改代码。在上图Define位置我们需要输入:USE_STDPERIPH_DRIVER。目的就是为了让stm32f10x.h包含stm32f10x_conf.h头文件,把所有外设都包含进来。stm32f10x.h相关代码如下图13.3-4:

图13.3-4 stm32f10x.h代码设计外设包含部分

        ②Include Paths:

        此处添加的头文件的路径,没有这一步编译的时候会报错提示找不到头文件。头文件放到了哪个文件夹,我们就把该文件夹添加到这里。

13.3.3 Dubug选项配置

图13.3-5 Debug选项卡配置

        下拉列表选择对应调试器,Settings/Flash Download里勾选Reset and Run。这个前面讲过,就不再赘述。

13.4 使用标准库点亮LED

        为区别前面2种点亮LED的方式,本次我们LED连接PB10这个IO口。

图13.4-1 简易接线图

代码如下:

#include "stm32f10x.h"                  // Device header

int main(void)
{
	//开启APB2,GPIOB外设时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	//初始化
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	//开启PB2
	GPIO_ResetBits(GPIOB,GPIO_Pin_2);
	while (1)
	{

	}
	
}

参考资料:

        【1】哔站江协科技STM32入门教程

        【2】《STM32单片机原理与项目实战》刘龙、高照玲、田华著

        【3】《ARM Cortex-M3嵌入式原理及应用》黄可亚著

        【4】《STM32嵌入式微控制器快速上手》陈志旺著

        【5】《STM32单片机应用与全案例实践》沈红卫等著

        【6】《野火STM32开发指南》

        【7】《正点原子STM32开发指南》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式锁(Redission)

分布式锁: 使用场景: 通常对于一些使用率高的服务,我们会进行多次部署,可能会部署在不同的服务器上,但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性,我们需要对线程进行加锁,…

Appium Android 自动化测试 -- 元素定位

自动化测试元素定位是难点之一,编写脚本时会经常卡在元素定位这里,有时一个元素能捣鼓一天,到最后还是定位不到。 Appium 定位方式和 selenium 一脉相承,selenium 中的定位方式Appium 中都支持,而 Appium 还增加了自己…

2021数学建模C题目– 生产企业原材料的订购与运输

C 题——生产企业原材料的订购与运输 思路:该题主要是通过对供应商的供货能力和运送商的运货能力进行估计,给出合适的材料订购方案 程序获取 第一题问题思路与结果: 对 402 家供应商的供货特征进行量化分析,建立反映保障企业生…

迈向百亿亿次人工智能数据基础设施

对我来说,在MinIO已经一个多星期了。沉浸在白板会议、架构审查和客户电话中的最大收获是,产品的简单性既是其显着特征,也是其最具决定性的价值驱动因素之一。在规模上尤其如此。由于人工智能的进步,计算能力的爆炸性增长对数据格局…

数据集标注研究

主要研究数据集标注存储文件的数据存储格式 目录 0.简介1.coco128-seg数据格式1.1 分割标注格式2.YOLO格式2.1 YOLO目标识别标签2.2 yolov5-seg分割标签2.TT100K数据集标注2.1 TT100K数据集标注文件解析0.简介 1.coco128-seg数据格式 1.1 分割标注格式 如coco128-seg数据集 …

Pikachu靶场--XSS

参考借鉴 Pikachu靶场之XSS漏洞详解_pikachu xss-CSDN博客 一个视频讲清楚XSS跨站脚本&#xff08;CTF教程&#xff0c;Web安全渗透测试入门&#xff09;_bilibili 反射型xss(get) 输入payload&#xff1a;<script>alert(123)</script> 解决一&#xff1a;在URL框内…

展讯-QMI8658和气压传感器驱动调试

1.调试QMI8658 参考demo&#xff0c;添加QMI8610相关内容 当前驱动路径位于&#xff1a;bsp/modules/input/misc/qmi8610/qmi8610.c 编译使用make sockoimage 用fastboot烧录 1.确定驱动被正常加载 代码添加之后&#xff0c;首先确定有没有进入当前驱动文件 dmesg |grep …

Python+Selenium自动化入门

本章内容需有一定Python基础&#xff0c;如何不懂的&#xff0c;请先学习Python。 什么&#xff1f;&#xff1f;没有好的学习资料&#xff0c;给你准备好了&#xff01;&#xff01; Web自动化环境搭建 1、软件准备 python64位安装包chrome64位浏览器&驱动浏览器驱动下…

聚道云软件连接器:打破壁垒,实现数电票与航信的无缝对接

一、客户介绍 某网络科技有限公司是一家专注于数字化解决方案的创新型企业。公司致力于为企业提供高效、便捷的科技服务&#xff0c;尤其在发票管理领域具有深厚的技术积累和丰富的实践经验。该公司凭借先进的软件连接技术和优质的服务&#xff0c;赢得了众多客户的信赖和好评…

TF-IDF在现代搜索引擎优化策略中的作用

TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种用于文本挖掘和信息检索的统计方法&#xff0c;用来评估一个词语对于一个文档或一个语料库的重要程度。TF-IDF算法结合了词频&#xff08;TF&#xff09;和逆文档频率&#xff08;IDF&#xff0…

TOPGP-TIPTOP调用外部Webservice

功能要求&#xff1a;ERP作业调用外部系统的webserice更新数据。 演示环境&#xff1a;ERP作业cooi002&#xff08;员工档案&#xff09;录入后更新到外部系统员工档案表。 1、外部系统的WebSerice使用.net搭建 2、在Service.cs中写一个调用方法erp_other erp_other中两个参数…

32.基于分隔符解决黏包和半包

LineBasedFrameDecoder 基于换行/n (linux)或回车换行/r/n(windows)进行分割。 使用LIneBasedFrameDecoder构造方法,需要设定一个最大长度。 如果超过了最大长度,还是没有找到换行符,就这位这个数据段太长了,抛出ToolLongFrameException DelimiterBasedFrameDecoder …

个体核定征收双免个体户0税率大额核定税率全行业筹划

工商银行的会计政策和程序规定 工商银行会计政策和程序规定 工商银行的会计政策和程序规定 https://www.9733.cn/shop/ssch 一、个体工商户核定征收 核定征收是一种简化税收管理方式&#xff0c;适用于簿记不健全、难以准确核算收入和成本的个体。以下是主要特点&#xff1a…

使用Naive UI的级联选择器 Cascader进行省市区选择

序言&#xff1a; 在进行PC版的功能开发时&#xff0c;进行客户管理时老板要让客户便捷的选择自己的省市区等信息&#xff0c;而不是让他们一个个去填写&#xff0c;这时就需要使用级联选择器来进行省市区的选择。 注&#xff1a;element ui/plus的级联选择器也是可以的。 步骤…

美国众议院通过ENFORCE ACT草案:AI领域的潜在冷战?

近日&#xff0c;美国众议院通过了“增强关键出口海外限制国家框架法案”&#xff08;ENFORCE ACT&#xff09;&#xff0c;该法案旨在限制AI/ML技术和人才向中国的流动。这一举动引发了广泛讨论和担忧&#xff0c;许多人认为这将对在美从事AI相关工作的中国人造成重大影响。本…

基于STM32的智能病房监控和人脸识别系统设计(毕业设计)

摘 要 随着技术的不断进步和医疗需求的不断增长&#xff0c;智能病房控制系统有望在医疗领域发挥更大的作用。基于此&#xff0c;本文研究设计了一款低成本、操作简单、适用性强的基于STM32的智能病房监控和人脸识别系统。该系统通过STM32作为控制器和OpenMV对人脸分辨进行门…

微信小程序开发---自定义底部tabBar

自定义tabBar注意事项&#xff1a; 在自定义 tabBar 模式下 &#xff0c;为了保证低版本兼容以及区分哪些页面是 tab 页&#xff0c;app.json文件中 tabBar 的相关配置项需完整声明&#xff0c;但这些字段不会作用于自定义 tabBar 的渲染。所有 tabBar 的样式都由该自定义组件…

实现一个渐进优化的 Linux cp 命令

1&#xff0c;第1版 copy 先写个轮廓 selfcp.c &#xff1a; #include <stdio.h>int main() {FILE *source, *destination;char ch;source fopen("H222.txt", "r");if (source NULL) {printf("Error opening source file!\n");retur…

ISO14001认证:引领企业迈向绿色未来

在当今全球环境日益恶化的背景下&#xff0c;绿色发展已成为企业和社会共同追求的目标。ISO14001环境管理体系作为由国际标准化组织&#xff08;ISO&#xff09;制定的环境管理国际标准&#xff0c;为企业提供了系统和全面的环境管理框架&#xff0c;适用于各种类型和规模的组织…

ubuntu 20.04 访问csdn报错 Secure connection failed

打扰了&#xff0c;csdn服务器的问题&#xff0c;和源没关系&#xff0c;后面又重新测试了一下。刚好那一刻网站连上了。 暂时没有好办法&#xff0c;等待一段时间就连上了&#xff0c;改host似乎也不太行。 问题原因&#xff1a; 我一边更新源 sudo apt update & apt up…