【STM32】关于stm32工程包含文件和宏定义的梳理

您所在的位置:网站首页 infotype在哪个头文件里面 【STM32】关于stm32工程包含文件和宏定义的梳理

【STM32】关于stm32工程包含文件和宏定义的梳理

2024-06-28 04:59| 来源: 网络整理| 查看: 265

前言

本文以一个stm32f1系列单片机的工程模板梳理了各文件和宏定义的功能。

文件介绍

首先是一个新建文件夹: 注:每个工程的文件重复名最好和工程要实现的功能相对应,及做到“见名知其意” 在这里插入图片描述 然后是工程包含的文件: 注:主要是这四个部分(关于工程编译生成的文件此模板放在了project里,有的模板是放在此目录下,常见分为两个:output和listing) 在这里插入图片描述 Doc文件(及Document,文件的意思)里面包含了工程的简单介绍文件(以.txt结尾的文件)和此工程涉及到的芯片资料,外设资料,各种说明文档等: 注:此文件夹非必要文件,但建议大家养成良好习惯,提前适应实际项目的要求 在这里插入图片描述 Libraries(及图书馆的意思,可以理解为全部的工程基础文件)文件里包含两个文件夹: 在这里插入图片描述 我们先来看第一个文件夹CMSIS: 在这里插入图片描述 startup文件里包含了本系列单片机所有型号的启动文件: 在这里插入图片描述 我们在工程里只需要添加一个和我们单片机型号匹配的文件即可,以其中三个文件为例说明,分别是以_ld,_md,_hd结尾的三个文件,其中的含义为小容量,中等容量,大容量。也就是我们芯片的flash大小,以芯片命名来判断flash大小的图片如下: 在这里插入图片描述 本工程以stm32f103c8t6而建,所以在工程里添加以下文件: 在这里插入图片描述 然后介绍其余文件,首先是芯片架构的接口文件,我们都知道stm32f1系列单片机是以com3为框架设计的,所以需要在工程里添加: 在这里插入图片描述 剩下的三个是关于芯片的宏定义文件和系统函数文件,我们不需要知道其中的含义,如果涉及到需要更改系统文件再去查阅即可。 接下来是函数库文件,也就是我们stm32单片机各种外设的功能实现函数: 在这里插入图片描述 里面包含了以下两个文件夹: 在这里插入图片描述 有C语言基础的同学应该都知道,inc就是我们函数的头文件,src就是我们函数功能文件,这两个文件是相互对应的: 在这里插入图片描述 以上就是libraies文件夹里的全部文件,值得提醒的是,此文件夹里的全部文件都是官方直接提供的,我们是不需要做任何更改的,只需要添加合适的启动文件到工程里即可。 project文件夹: 在这里插入图片描述 此文件夹一开始是空的,我们在keil里创建工程的时候选择此文件夹目录,然后就会出现以上除了OBJ的所有文件,然后我们再添加OBJ文件,这里用于保存我们工程的编译输出文件。 最后是USER文件,也就是我们用户自己的文件: 在这里插入图片描述 第一个是我们自己添加的main.c文件,第二个是外设函数库包含头文件(稍后会有介绍),最后两个是系统中断文件,我们在工程中涉及的中断函数都写在这里面,当然也可以放在用户其他文件里。 注:后三个文件也是官方直接提供给我们的 现在我们使用keil打开我们的工程: 在这里插入图片描述 现在进行我们“小锤子”的配置: 在这里插入图片描述 选择芯片的型号我们在新建工程的时候就已经选定了,后上角的pack就是我们f1系列单片机的各种型号,必须在keil里添加pack才能进行芯片型号的选择,当然,此步骤我们在查阅安装keil软件时都会有相应介绍的,在这里我们假设大家都会此步骤了,不再叙述。 然后是设置我们板子上的外部晶振: 在这里插入图片描述 就是左上角的Xtal,一般f1系列的单片机都是8M晶振,这是官方建议的。 然后是设置output和listing的输出文件目录(就是选择我们在project里创建的OBJ文件,这里展示output的添加,listing同理): 在这里插入图片描述 然后是添加头文件的目录: 在这里插入图片描述 注:文件路径必须包含到最终包含文件夹,例如,如果我们添加自己的用户文件里存在文件夹,我们就要包含到这个文件夹目录 这里面还有两个宏定义(其中以“.”分隔): 在这里插入图片描述 第一个是设置外设函数的头文件是否包含,第二个是系统的时钟频率配置。这两个宏定义的功能稍后会有介绍。 后面还有Debug的配置,因为下载器的种类很多,大家根据自己的下载器查阅相应资料就知道了。 以上就是初始工程小锤子的全部配置。 现在添加各种系统文件,函数文件和用户文件。点击小锤子右边的三个正方体就可添加文件了。 在这里插入图片描述 添加五个Groups并且做好重复名!!!添加的Files上文都已经介绍了,在这里再放下图片: 在这里插入图片描述 在这里插入图片描述 注:FWLIB里只需要添加.c文件,也就是src里面的全部文件。CMSIS里面的.h文件是可以不用添加的,因为我们在小锤子的path里已经添加了,但博主喜欢对称美,所以…嘿嘿 main.c里必须要添加: 在这里插入图片描述 此头文件里包含了所有的系统函数文件,我们也只需要添加这一个头文件就可以使用stm32的全部功能了,如果我们需要添加用户头文件直接在这个头文件下面添加即可。 现在介绍宏定义:USE_STDPERIPH_DRIVER 我们只有添加这个宏定义才能使用stm32f10x_conf.h,为什么呢?我们打开stm32f10x.h并找到此位置: 在这里插入图片描述 可以看到我们满足if,所以系统包含进了conf文件,现在打开conf文件: 在这里插入图片描述 可以看到我们包含进去了所有的外设函数文件,但我们一般不会用到全部的外设,如果全部包含会增加我们代码的大小,我们只需要包含我们用到的函数其他的注释掉即可,例如: 在这里插入图片描述 其实现在我们单片机的flash大小一般是远远大于我们工程所占的内存的,所以一般的教学并没有介绍这个宏定义和conf文件,默认是全部包含的,但我觉得我们应该了解芯片的所有系统文件的含义和功能的,万一flash不够用了呢… 现在介绍宏定义:STM32F10X_MD 我们都知道f1系列的单片机最大时钟频率是72MHz,我们要注意“最大”这个措词,我们还能设置其他的频率?可没见过在哪设置频率的啊?都是直接告诉我以72来算时间就行了啊?我们找到以下位置: 在这里插入图片描述 相信大家看到这里就已经全明白了,我们的宏定义满足else后面的定义,这里默认给我们开启了最大72MHz的时钟频率,如果我们想使用其他频率,重新开启其他频率并注释掉原来的频率就行了。 关于时钟频率的配置是在启动文件里调用的,而且是先配置时钟才能执行main函数里的代码,我们打开启动文件以下位置: 在这里插入图片描述 SystemInit就是初始化系统的一些配置如时钟,然后才开始执行main函数里面的代码的。 至此,关于stm32f1系列的工程模板就梳理完毕了,对于stm32的学习远远没有一开始接触时想象的那么简单,还有很多的地方没有了解到,希望自己能持之以恒,不断学习,不断进步!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3